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, 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
291static bool clean_shutdown(void (*callback)(void *), void *parameter) 291static 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: