summaryrefslogtreecommitdiff
path: root/apps/misc.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/misc.c')
-rw-r--r--apps/misc.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/apps/misc.c b/apps/misc.c
index ddf8d06e7b..d1b5c2274f 100644
--- a/apps/misc.c
+++ b/apps/misc.c
@@ -46,6 +46,7 @@
46#ifdef HAVE_MMC 46#ifdef HAVE_MMC
47#include "ata_mmc.h" 47#include "ata_mmc.h"
48#endif 48#endif
49#include "tree.h"
49 50
50#ifdef HAVE_LCD_BITMAP 51#ifdef HAVE_LCD_BITMAP
51#include "bmp.h" 52#include "bmp.h"
@@ -381,6 +382,16 @@ bool settings_parseline(char* line, char** name, char** value)
381 return true; 382 return true;
382} 383}
383 384
385static void system_flush(void)
386{
387 tree_flush();
388}
389
390static void system_restore(void)
391{
392 tree_restore();
393}
394
384static bool clean_shutdown(void (*callback)(void *), void *parameter) 395static bool clean_shutdown(void (*callback)(void *), void *parameter)
385{ 396{
386#ifdef SIMULATOR 397#ifdef SIMULATOR
@@ -396,6 +407,9 @@ static bool clean_shutdown(void (*callback)(void *), void *parameter)
396 splash(0, true, str(LANG_SHUTTINGDOWN)); 407 splash(0, true, str(LANG_SHUTTINGDOWN));
397 if (callback != NULL) 408 if (callback != NULL)
398 callback(parameter); 409 callback(parameter);
410
411 system_flush();
412
399 shutdown_hw(); 413 shutdown_hw();
400 } 414 }
401#endif 415#endif
@@ -467,7 +481,11 @@ long default_event_handler_ex(long event, void (*callback)(void *), void *parame
467#ifdef HAVE_MMC 481#ifdef HAVE_MMC
468 if (!mmc_touched() || (mmc_remove_request() == SYS_MMC_EXTRACTED)) 482 if (!mmc_touched() || (mmc_remove_request() == SYS_MMC_EXTRACTED))
469#endif 483#endif
484 {
485 system_flush();
470 usb_screen(); 486 usb_screen();
487 system_restore();
488 }
471 return SYS_USB_CONNECTED; 489 return SYS_USB_CONNECTED;
472 case SYS_POWEROFF: 490 case SYS_POWEROFF:
473 if (!clean_shutdown(callback, parameter)) 491 if (!clean_shutdown(callback, parameter))