summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorMagnus Holmgren <magnushol@gmail.com>2011-04-30 11:00:26 +0000
committerMagnus Holmgren <magnushol@gmail.com>2011-04-30 11:00:26 +0000
commited2cfb8c1d2215fc6ac287dbf03bbd2847ec3ef3 (patch)
tree6e6239b3151cf14a6432941a5957e1452e1fc3a0 /apps
parent16e793f5d1d626e6506f2b172efa03f46fb0ed39 (diff)
downloadrockbox-ed2cfb8c1d2215fc6ac287dbf03bbd2847ec3ef3.tar.gz
rockbox-ed2cfb8c1d2215fc6ac287dbf03bbd2847ec3ef3.tar.bz2
rockbox-ed2cfb8c1d2215fc6ac287dbf03bbd2847ec3ef3.zip
Don't (partially) apply changes to max entries in the file browser immediately. The setting affects a buffer that is allocated during boot, so code using that buffer should use the value that was in effect during boot. Add a note to the manual that a reboot is needed for the changes to be applied.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29798 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/filetree.c2
-rw-r--r--apps/tagtree.c2
-rw-r--r--apps/tree.c15
-rw-r--r--apps/tree.h2
4 files changed, 9 insertions, 12 deletions
diff --git a/apps/filetree.c b/apps/filetree.c
index 96fcc8a1e7..eaaee9644d 100644
--- a/apps/filetree.c
+++ b/apps/filetree.c
@@ -285,7 +285,7 @@ int ft_load(struct tree_context* c, const char* tempdir)
c->dirsindir = 0;
c->dirfull = false;
- for ( i=0; i < global_settings.max_files_in_dir; i++ ) {
+ for ( i=0; i < c->dircache_count; i++ ) {
int len;
struct dirent *entry = readdir(dir);
struct dirinfo info;
diff --git a/apps/tagtree.c b/apps/tagtree.c
index 575ab221ac..2a2e2b805b 100644
--- a/apps/tagtree.c
+++ b/apps/tagtree.c
@@ -1288,7 +1288,7 @@ static int retrieve_entries(struct tree_context *c, int offset, bool init)
dptr++;
current_entry_count++;
- if (current_entry_count >= global_settings.max_files_in_dir)
+ if (current_entry_count >= c->dircache_count)
{
logf("chunk mode #3: %d", current_entry_count);
c->dirfull = true;
diff --git a/apps/tree.c b/apps/tree.c
index d87a93e2a0..44c4b92883 100644
--- a/apps/tree.c
+++ b/apps/tree.c
@@ -95,7 +95,6 @@ static char lastdir[MAX_PATH];
#ifdef HAVE_TAGCACHE
static int lasttable, lastextra, lastfirstpos;
#endif
-static int max_files = 0;
static bool reload_dir = false;
@@ -391,7 +390,7 @@ static int update_dir(void)
#ifdef HAVE_TAGCACHE
!id3db &&
#endif
- (tc.dirfull || tc.filesindir == global_settings.max_files_in_dir) )
+ (tc.dirfull || tc.filesindir == tc.dircache_count) )
{
splash(HZ, ID2P(LANG_SHOWDIR_BUFFER_FULL));
}
@@ -1005,20 +1004,18 @@ int rockbox_browse(struct browse_context *browse)
void tree_mem_init(void)
{
- /* We copy the settings value in case it is changed by the user. We can't
- use it until the next reboot. */
- max_files = global_settings.max_files_in_dir;
-
/* initialize tree context struct */
memset(&tc, 0, sizeof(tc));
tc.dirfilter = &global_settings.dirfilter;
tc.sort_dir = global_settings.sort_dir;
- tc.name_buffer_size = AVERAGE_FILENAME_LENGTH * max_files;
+ tc.name_buffer_size = AVERAGE_FILENAME_LENGTH *
+ global_settings.max_files_in_dir;
tc.name_buffer = buffer_alloc(tc.name_buffer_size);
- tc.dircache_size = max_files * sizeof(struct entry);
- tc.dircache = buffer_alloc(tc.dircache_size);
+ tc.dircache_count = global_settings.max_files_in_dir;
+ tc.dircache = buffer_alloc(global_settings.max_files_in_dir *
+ sizeof(struct entry));
tree_get_filetypes(&filetypes, &filetypes_count);
}
diff --git a/apps/tree.h b/apps/tree.h
index 7275c9ae94..104d6c480a 100644
--- a/apps/tree.h
+++ b/apps/tree.h
@@ -84,7 +84,7 @@ struct tree_context {
* contains all files and dirs in the current
* dir (with filters applied) */
void* dircache;
- int dircache_size;
+ int dircache_count; /* Number of entries in dircache */
char* name_buffer;
int name_buffer_size;
int dentry_size;