summaryrefslogtreecommitdiff
path: root/apps/misc.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/misc.c')
-rw-r--r--apps/misc.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/apps/misc.c b/apps/misc.c
index 9a890155a7..9f2ac366ae 100644
--- a/apps/misc.c
+++ b/apps/misc.c
@@ -340,7 +340,7 @@ bool settings_parseline(char* line, char** name, char** value)
340 return true; 340 return true;
341} 341}
342 342
343bool clean_shutdown(void) 343static bool clean_shutdown(void (*callback)(void *), void *parameter)
344{ 344{
345#ifdef SIMULATOR 345#ifdef SIMULATOR
346 exit(0); 346 exit(0);
@@ -351,6 +351,8 @@ bool clean_shutdown(void)
351 { 351 {
352 lcd_clear_display(); 352 lcd_clear_display();
353 splash(0, true, str(LANG_SHUTTINGDOWN)); 353 splash(0, true, str(LANG_SHUTTINGDOWN));
354 if (callback != NULL)
355 callback(parameter);
354 shutdown_hw(); 356 shutdown_hw();
355 } 357 }
356#endif 358#endif
@@ -425,9 +427,7 @@ long default_event_handler_ex(long event, void (*callback)(void *), void *parame
425 usb_screen(); 427 usb_screen();
426 return SYS_USB_CONNECTED; 428 return SYS_USB_CONNECTED;
427 case SYS_POWEROFF: 429 case SYS_POWEROFF:
428 if (callback != NULL) 430 if (!clean_shutdown(callback, parameter))
429 callback(parameter);
430 if (!clean_shutdown())
431 return SYS_POWEROFF; 431 return SYS_POWEROFF;
432 break; 432 break;
433#ifdef HAVE_CHARGING 433#ifdef HAVE_CHARGING