1
0
Fork 0
forked from len0rd/rockbox

Initialize dircache in two phases.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10548 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Miika Pekkarinen 2006-08-12 14:40:38 +00:00
parent 25425360b5
commit 69cdc75a0f

View file

@ -109,29 +109,57 @@ void app_main(void)
browse_root(); browse_root();
} }
int init_dircache(void) int init_dircache(bool preinit)
{ {
#ifdef HAVE_DIRCACHE #ifdef HAVE_DIRCACHE
int result = 0; int result = 0;
bool clear = false;
if (preinit)
dircache_init();
dircache_init();
if (global_settings.dircache) if (global_settings.dircache)
{ {
# ifdef HAVE_EEPROM # ifdef HAVE_EEPROM
if (firmware_settings.initialized && firmware_settings.disk_clean) if (firmware_settings.initialized && firmware_settings.disk_clean
&& preinit)
{ {
result = dircache_load(DIRCACHE_FILE); result = dircache_load(DIRCACHE_FILE);
remove(DIRCACHE_FILE); remove(DIRCACHE_FILE);
if (result == 0) if (result < 0)
return 0; firmware_settings.disk_clean = false;
return result;
} }
# endif # endif
result = dircache_build(global_settings.dircache_size); if (preinit)
return -1;
if (!dircache_is_enabled()
&& !dircache_is_initializing())
{
if (global_settings.dircache_size <= 0)
{
gui_syncsplash(0, true, str(LANG_DIRCACHE_BUILDING));
clear = true;
}
result = dircache_build(global_settings.dircache_size);
}
if (result < 0)
gui_syncsplash(0, true, "Failed! Result: %d", result);
if (clear)
{
backlight_on();
show_logo();
}
} }
return result; return result;
#else #else
(void)preinit;
return 0; return 0;
#endif #endif
} }
@ -195,7 +223,8 @@ void init(void)
settings_load(SETTINGS_ALL); settings_load(SETTINGS_ALL);
gui_sync_wps_init(); gui_sync_wps_init();
settings_apply(); settings_apply();
init_dircache(); init_dircache(true);
init_dircache(false);
init_tagcache(); init_tagcache();
sleep(HZ/2); sleep(HZ/2);
tree_init(); tree_init();
@ -401,11 +430,14 @@ void init(void)
settings_load(SETTINGS_ALL); settings_load(SETTINGS_ALL);
init_dircache(); if (init_dircache(true) < 0)
{
remove(TAGCACHE_STATEFILE);
}
gui_sync_wps_init(); gui_sync_wps_init();
settings_apply(); settings_apply();
//init_dircache(); init_dircache(false);
init_tagcache(); init_tagcache();
#ifdef HAVE_EEPROM #ifdef HAVE_EEPROM