summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/main.c45
-rw-r--r--apps/tree.c3
2 files changed, 27 insertions, 21 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 }
diff --git a/apps/tree.c b/apps/tree.c
index 104344ee59..f0cf377041 100644
--- a/apps/tree.c
+++ b/apps/tree.c
@@ -1443,8 +1443,7 @@ void tree_flush(void)
1443 { 1443 {
1444 global_settings.dircache_size = dircache_get_cache_size(); 1444 global_settings.dircache_size = dircache_get_cache_size();
1445# ifdef HAVE_EEPROM_SETTINGS 1445# ifdef HAVE_EEPROM_SETTINGS
1446 if (dircache_is_enabled() && firmware_settings.initialized) 1446 dircache_save();
1447 dircache_save(DIRCACHE_FILE);
1448# endif 1447# endif
1449 dircache_disable(); 1448 dircache_disable();
1450 } 1449 }