From 7e14b935dfdcd808cfb0703d19a43efd11eeef16 Mon Sep 17 00:00:00 2001 From: Thomas Martitz Date: Tue, 30 Aug 2011 21:07:46 +0000 Subject: Dircache: Allow dircache to be enabled without reboot. Also add two dircache function, one of which does what dircache_disable() did previously as this now also frees the dircache buffer. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30393 a1c6a512-1295-4272-9138-f99709370657 --- apps/menus/settings_menu.c | 16 +++++++--------- apps/tagcache.c | 2 +- apps/tree.c | 2 +- 3 files changed, 9 insertions(+), 11 deletions(-) (limited to 'apps') diff --git a/apps/menus/settings_menu.c b/apps/menus/settings_menu.c index b3003bf..82c91aa 100644 --- a/apps/menus/settings_menu.c +++ b/apps/menus/settings_menu.c @@ -189,16 +189,14 @@ static int dircache_callback(int action,const struct menu_item_ex *this_item) switch (action) { case ACTION_EXIT_MENUITEM: /* on exit */ - switch (global_settings.dircache) + if (global_settings.dircache && !dircache_is_enabled()) { - case true: - if (!dircache_is_enabled()) - splash(HZ*2, ID2P(LANG_PLEASE_REBOOT)); - break; - case false: - if (dircache_is_enabled()) - dircache_disable(); - break; + if (dircache_build(0) < 0) + splash(HZ*2, ID2P(LANG_PLEASE_REBOOT)); + } + else if (!global_settings.dircache && dircache_is_enabled()) + { + dircache_disable(); } break; } diff --git a/apps/tagcache.c b/apps/tagcache.c index e3f2f4f..8d522b1 100644 --- a/apps/tagcache.c +++ b/apps/tagcache.c @@ -3099,7 +3099,7 @@ static bool commit(void) #ifdef HAVE_DIRCACHE /* Rebuild the dircache, if we stole the buffer. */ if (dircache_buffer_stolen) - dircache_build(0); + dircache_resume(); #endif #ifdef HAVE_TC_RAMCACHE diff --git a/apps/tree.c b/apps/tree.c index c7484ff..24acd5a 100644 --- a/apps/tree.c +++ b/apps/tree.c @@ -1216,7 +1216,7 @@ void tree_flush(void) if (firmware_settings.initialized) dircache_save(); # endif - dircache_disable(); + dircache_suspend(); } else { -- cgit v1.1