diff options
Diffstat (limited to 'apps/misc.c')
-rw-r--r-- | apps/misc.c | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/apps/misc.c b/apps/misc.c index 7e4e5071a1..80c4588f0f 100644 --- a/apps/misc.c +++ b/apps/misc.c @@ -583,16 +583,25 @@ static bool clean_shutdown(void (*callback)(void *), void *parameter) #ifdef X5_BACKLIGHT_SHUTDOWN x5_backlight_shutdown(); #endif + if (!battery_level_safe()) + gui_syncsplash(3*HZ, true, "%s %s", + str(LANG_WARNING_BATTERY_EMPTY), + str(LANG_SHUTTINGDOWN)); + else if (battery_level_critical()) + gui_syncsplash(3*HZ, true, "%s %s", + str(LANG_WARNING_BATTERY_LOW), + str(LANG_SHUTTINGDOWN)); + else { #ifdef HAVE_TAGCACHE - if (!tagcache_prepare_shutdown()) - { - cancel_shutdown(); - gui_syncsplash(HZ, true, str(LANG_TAGCACHE_BUSY)); - return false; - } + if (!tagcache_prepare_shutdown()) + { + cancel_shutdown(); + gui_syncsplash(HZ, true, str(LANG_TAGCACHE_BUSY)); + return false; + } #endif - - gui_syncsplash(0, true, str(LANG_SHUTTINGDOWN)); + gui_syncsplash(0, true, str(LANG_SHUTTINGDOWN)); + } if (global_settings.fade_on_stop && (audio_status() & AUDIO_STATUS_PLAY)) @@ -607,7 +616,8 @@ static bool clean_shutdown(void (*callback)(void *), void *parameter) if (callback != NULL) callback(parameter); - system_flush(); + if (!battery_level_critical()) /* do not save on critical battery */ + system_flush(); #ifdef HAVE_EEPROM_SETTINGS if (firmware_settings.initialized) { |