summaryrefslogtreecommitdiff
path: root/apps/main.c
diff options
context:
space:
mode:
authorMiika Pekkarinen <miipekk@ihme.org>2006-12-22 09:11:09 +0000
committerMiika Pekkarinen <miipekk@ihme.org>2006-12-22 09:11:09 +0000
commitc8a9ca748d0a3b1961f6577159a9de8ac4af60e7 (patch)
tree16f719514542087f5a2e0d5bac8d30b4fce5910a /apps/main.c
parent7258b5e51a78e4d990bf1225c5893dc4b78d78b7 (diff)
downloadrockbox-c8a9ca748d0a3b1961f6577159a9de8ac4af60e7.tar.gz
rockbox-c8a9ca748d0a3b1961f6577159a9de8ac4af60e7.zip
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
Diffstat (limited to 'apps/main.c')
-rw-r--r--apps/main.c45
1 files changed, 26 insertions, 19 deletions
diff --git a/apps/main.c b/apps/main.c
index f9e6054973..0b35a61a75 100644
--- a/apps/main.c
+++ b/apps/main.c
@@ -128,25 +128,32 @@ static int init_dircache(bool preinit)
128 if (preinit) 128 if (preinit)
129 dircache_init(); 129 dircache_init();
130 130
131 if (global_settings.dircache) 131 if (!global_settings.dircache)
132 { 132 return 0;
133
133# ifdef HAVE_EEPROM_SETTINGS 134# ifdef HAVE_EEPROM_SETTINGS
134 if (firmware_settings.initialized && firmware_settings.disk_clean 135 if (firmware_settings.initialized && firmware_settings.disk_clean
135 && preinit) 136 && preinit)
137 {
138 result = dircache_load();
139
140 if (result < 0)
136 { 141 {
137 result = dircache_load(DIRCACHE_FILE); 142 firmware_settings.disk_clean = false;
138 remove(DIRCACHE_FILE); 143 if (global_settings.dircache_size <= 0)
139 if (result < 0)
140 { 144 {
141 firmware_settings.disk_clean = false; 145 /* This will be in default language, settings are not
142 if (global_settings.dircache_size >= 0) 146 applied yet. Not really any easy way to fix that. */
143 dircache_build(global_settings.dircache_size); 147 gui_syncsplash(0, true, str(LANG_DIRCACHE_BUILDING));
148 clear = true;
144 } 149 }
145 150
146 return result; 151 dircache_build(global_settings.dircache_size);
147 } 152 }
153 }
154 else
148# endif 155# endif
149 156 {
150 if (preinit) 157 if (preinit)
151 return -1; 158 return -1;
152 159
@@ -163,12 +170,12 @@ static int init_dircache(bool preinit)
163 170
164 if (result < 0) 171 if (result < 0)
165 gui_syncsplash(0, true, "Failed! Result: %d", result); 172 gui_syncsplash(0, true, "Failed! Result: %d", result);
166 173 }
167 if (clear) 174
168 { 175 if (clear)
169 backlight_on(); 176 {
170 show_logo(); 177 backlight_on();
171 } 178 show_logo();
172 global_settings.dircache_size = dircache_get_cache_size(); 179 global_settings.dircache_size = dircache_get_cache_size();
173 settings_save(); 180 settings_save();
174 } 181 }