1
0
Fork 0
forked from len0rd/rockbox

Try to make sure dircache state file on flashed H1xx targets is

handled correctly and no old state is never used.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11833 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Miika Pekkarinen 2006-12-22 09:11:09 +00:00
parent 7258b5e51a
commit c8a9ca748d
4 changed files with 44 additions and 31 deletions

View file

@ -128,25 +128,32 @@ static int init_dircache(bool preinit)
if (preinit)
dircache_init();
if (global_settings.dircache)
{
if (!global_settings.dircache)
return 0;
# ifdef HAVE_EEPROM_SETTINGS
if (firmware_settings.initialized && firmware_settings.disk_clean
&& preinit)
{
result = dircache_load(DIRCACHE_FILE);
remove(DIRCACHE_FILE);
if (result < 0)
{
firmware_settings.disk_clean = false;
if (global_settings.dircache_size >= 0)
dircache_build(global_settings.dircache_size);
}
if (firmware_settings.initialized && firmware_settings.disk_clean
&& preinit)
{
result = dircache_load();
return result;
if (result < 0)
{
firmware_settings.disk_clean = false;
if (global_settings.dircache_size <= 0)
{
/* This will be in default language, settings are not
applied yet. Not really any easy way to fix that. */
gui_syncsplash(0, true, str(LANG_DIRCACHE_BUILDING));
clear = true;
}
dircache_build(global_settings.dircache_size);
}
}
else
# endif
{
if (preinit)
return -1;
@ -163,12 +170,12 @@ static int init_dircache(bool preinit)
if (result < 0)
gui_syncsplash(0, true, "Failed! Result: %d", result);
if (clear)
{
backlight_on();
show_logo();
}
}
if (clear)
{
backlight_on();
show_logo();
global_settings.dircache_size = dircache_get_cache_size();
settings_save();
}