summaryrefslogtreecommitdiff
path: root/apps/main.c
diff options
context:
space:
mode:
authorMiika Pekkarinen <miipekk@ihme.org>2006-08-05 20:19:10 +0000
committerMiika Pekkarinen <miipekk@ihme.org>2006-08-05 20:19:10 +0000
commit954b73265404075ec4d379ddea14e626113a8677 (patch)
tree5c6ff0056ebd118aadb896856e7679a41c595cba /apps/main.c
parent85ba65d2a3fa3d10799efadbe3a33f026bf354df (diff)
downloadrockbox-954b73265404075ec4d379ddea14e626113a8677.zip
rockbox-954b73265404075ec4d379ddea14e626113a8677.tar.gz
rockbox-954b73265404075ec4d379ddea14e626113a8677.tar.bz2
rockbox-954b73265404075ec4d379ddea14e626113a8677.tar.xz
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
Diffstat (limited to 'apps/main.c')
-rw-r--r--apps/main.c46
1 files changed, 28 insertions, 18 deletions
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();