summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/settings_list.c36
-rwxr-xr-xmanual/configure_rockbox/system_options.tex19
2 files changed, 40 insertions, 15 deletions
diff --git a/apps/settings_list.c b/apps/settings_list.c
index 1bf8b4202f..0ea6026346 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -354,6 +354,31 @@ static const char graphic_numeric[] = "graphic,numeric";
# endif
#endif
+/*
+ * Total buffer size due to this setting = max files in dir * 52 bytes
+ * Keep this in mind when selecting the maximum - if the maximum is too
+ * high it's possible rockbox could hit OOM and become unusable until
+ * the config file is deleted manually.
+ *
+ * Note the FAT32 limit is 65534 files per directory, but this limit
+ * also applies to the database browser so it makes sense to support
+ * larger maximums.
+ */
+#if MEMORYSIZE >= 16
+# define MAX_FILES_IN_DIR_DEFAULT 5000
+# define MAX_FILES_IN_DIR_MAX 100000
+# define MAX_FILES_IN_DIR_STEP 1000
+#elif MEMORYSIZE >= 8
+# define MAX_FILES_IN_DIR_DEFAULT 5000
+# define MAX_FILES_IN_DIR_MAX 40000
+# define MAX_FILES_IN_DIR_STEP 500
+#else
+/* historical defaults, only for 2 MiB targets these days */
+# define MAX_FILES_IN_DIR_DEFAULT 1000
+# define MAX_FILES_IN_DIR_MAX 10000
+# define MAX_FILES_IN_DIR_STEP 50
+#endif
+
#if LCD_DEPTH > 1
static const char* list_pad_formatter(char *buffer, size_t buffer_size,
int val, const char *unit)
@@ -1028,13 +1053,10 @@ const struct settings_list settings[] = {
"max files in playlist", UNIT_INT, 1000, 32000, 1000,
NULL, NULL, NULL),
INT_SETTING(F_BANFROMQS, max_files_in_dir, LANG_MAX_FILES_IN_DIR,
-#if MEMORYSIZE > 1
- 1000,
-#else
- 200,
-#endif
- "max files in dir", UNIT_INT, 50, 10000, 50,
- NULL, NULL, NULL),
+ MAX_FILES_IN_DIR_DEFAULT, "max files in dir", UNIT_INT,
+ MAX_FILES_IN_DIR_STEP /* min */, MAX_FILES_IN_DIR_MAX,
+ MAX_FILES_IN_DIR_STEP,
+ NULL, NULL, NULL),
/* use this setting for user code even if there's no exchangable battery
* support enabled */
#if BATTERY_CAPACITY_INC > 0
diff --git a/manual/configure_rockbox/system_options.tex b/manual/configure_rockbox/system_options.tex
index 336b0dd84d..ba80a6e6e4 100755
--- a/manual/configure_rockbox/system_options.tex
+++ b/manual/configure_rockbox/system_options.tex
@@ -102,18 +102,21 @@ This sub menu relates to limits in the Rockbox operating system.
\begin{description}
\item [Max Entries in File Browser.] This setting controls the limit on
the number of files that you can see in any particular directory in the
- file browser. You can configure the size to be between 50 and
- 10,000 files in steps of 50. The default is 400. \opt{HAVE_DISK_STORAGE}{
- Higher values will shorten the music buffer, which can negatively affect
- battery life by forcing the disk to spin up more often. Increase this
- setting \emph{only} if you need to.}
+ file browser. \opt{HAVE_DISK_STORAGE}{Higher values will shorten the music
+ buffer, which can negatively affect battery life by forcing the disk to
+ spin up more often. Increase this setting \emph{only} if you need to.}
+
+ \note{This setting also affects the maximum number of tracks that can
+ be handled by the database browser. If you find that long lists are not
+ being sorted correctly in the database browser you may need to increase
+ this setting.}
\item [Max Playlist Size.] This setting controls the maximum size of
a playlist. The playlist size can be between 1,000 and 32,000 files,
in steps of 1,000 (default is 10,000). \opt{HAVE_DISK_STORAGE}{Higher
- values will shorten the music buffer, which can negatively affect battery
- life by forcing the disk to spin up more often. Increase this setting
- \emph{only} if you use very large playlists.}
+ values will shorten the music buffer, which can negatively affect
+ battery life by forcing the disk to spin up more often. Increase this
+ setting \emph{only} if you use very large playlists.}
\item [Glyphs To Cache.] This sets the default memory allocation size
for fonts in unique glyphs. This should be set to the number of unique