From 954b73265404075ec4d379ddea14e626113a8677 Mon Sep 17 00:00:00 2001 From: Miika Pekkarinen Date: Sat, 5 Aug 2006 20:19:10 +0000 Subject: Initial support and use for EEPROM memory on H120 & H140 players when Rockbox firmware has been flashed over original firmware (not yet possible to do). Dircache & tagcache serialization for fast bootup without the need to scan disk when Rockbox is in flash. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10464 a1c6a512-1295-4272-9138-f99709370657 --- apps/main.c | 46 ++++++++++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 18 deletions(-) (limited to 'apps/main.c') diff --git a/apps/main.c b/apps/main.c index b725d02..907e112 100644 --- a/apps/main.c +++ b/apps/main.c @@ -65,6 +65,7 @@ #include "lang.h" #include "string.h" #include "splash.h" +#include "eeprom_settings.h" #if (CONFIG_CODEC == SWCODEC) #include "playback.h" @@ -108,35 +109,30 @@ void app_main(void) browse_root(); } -#ifdef HAVE_DIRCACHE -void init_dircache(void) +int init_dircache(void) { - int result; - bool clear = false; +#ifdef HAVE_DIRCACHE + int result = 0; dircache_init(); if (global_settings.dircache) { - if (global_settings.dircache_size == 0) +# ifdef HAVE_EEPROM + if (firmware_settings.initialized && firmware_settings.disk_clean) { - gui_syncsplash(0, true, str(LANG_DIRCACHE_BUILDING)); - clear = true; + if (dircache_load(DIRCACHE_FILE) == 0) + return 0; } +# endif 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; #else -# define init_dircache(...) + return 0; #endif +} void init_tagcache(void) { @@ -376,6 +372,10 @@ void init(void) } } +#ifdef HAVE_EEPROM + eeprom_settings_init(); +#endif + settings_calc_config_sector(); #if defined(SETTINGS_RESET) || (CONFIG_KEYPAD == IPOD_4G_PAD) @@ -395,11 +395,21 @@ void init(void) settings_load(SETTINGS_ALL); + init_dircache(); + gui_sync_wps_init(); settings_apply(); - init_dircache(); + //init_dircache(); init_tagcache(); +#ifdef HAVE_EEPROM + if (firmware_settings.initialized) + { + /* In case we crash. */ + firmware_settings.disk_clean = false; + eeprom_settings_store(); + } +#endif status_init(); playlist_init(); tree_init(); -- cgit v1.1