diff options
Diffstat (limited to 'apps/misc.c')
-rw-r--r-- | apps/misc.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/apps/misc.c b/apps/misc.c index 4d8c2e975a..d5e8bb5d98 100644 --- a/apps/misc.c +++ b/apps/misc.c | |||
@@ -288,7 +288,8 @@ static void system_restore(void) | |||
288 | tree_restore(); | 288 | tree_restore(); |
289 | } | 289 | } |
290 | 290 | ||
291 | static bool clean_shutdown(void (*callback)(void *), void *parameter) | 291 | static bool clean_shutdown(enum shutdown_type sd_type, |
292 | void (*callback)(void *), void *parameter) | ||
292 | { | 293 | { |
293 | long msg_id = -1; | 294 | long msg_id = -1; |
294 | 295 | ||
@@ -392,7 +393,7 @@ static bool clean_shutdown(void (*callback)(void *), void *parameter) | |||
392 | voice_wait(); | 393 | voice_wait(); |
393 | } | 394 | } |
394 | 395 | ||
395 | shutdown_hw(); | 396 | shutdown_hw(sd_type); |
396 | } | 397 | } |
397 | return false; | 398 | return false; |
398 | } | 399 | } |
@@ -605,8 +606,17 @@ long default_event_handler_ex(long event, void (*callback)(void *), void *parame | |||
605 | return SYS_USB_CONNECTED; | 606 | return SYS_USB_CONNECTED; |
606 | 607 | ||
607 | case SYS_POWEROFF: | 608 | case SYS_POWEROFF: |
608 | if (!clean_shutdown(callback, parameter)) | 609 | case SYS_REBOOT: |
609 | return SYS_POWEROFF; | 610 | { |
611 | enum shutdown_type sd_type; | ||
612 | if (event == SYS_POWEROFF) | ||
613 | sd_type = SHUTDOWN_POWER_OFF; | ||
614 | else | ||
615 | sd_type = SHUTDOWN_REBOOT; | ||
616 | |||
617 | if (!clean_shutdown(sd_type, callback, parameter)) | ||
618 | return event; | ||
619 | } | ||
610 | break; | 620 | break; |
611 | #if CONFIG_CHARGING | 621 | #if CONFIG_CHARGING |
612 | case SYS_CHARGER_CONNECTED: | 622 | case SYS_CHARGER_CONNECTED: |