summaryrefslogtreecommitdiffstats
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)
tree_restore();
}
-static bool clean_shutdown(void (*callback)(void *), void *parameter)
+static bool clean_shutdown(enum shutdown_type sd_type,
+ void (*callback)(void *), void *parameter)
{
long msg_id = -1;
@@ -392,7 +393,7 @@ static bool clean_shutdown(void (*callback)(void *), void *parameter)
voice_wait();
}
- shutdown_hw();
+ shutdown_hw(sd_type);
}
return false;
}
@@ -605,8 +606,17 @@ long default_event_handler_ex(long event, void (*callback)(void *), void *parame
return SYS_USB_CONNECTED;
case SYS_POWEROFF:
- if (!clean_shutdown(callback, parameter))
- return SYS_POWEROFF;
+ case SYS_REBOOT:
+ {
+ enum shutdown_type sd_type;
+ if (event == SYS_POWEROFF)
+ sd_type = SHUTDOWN_POWER_OFF;
+ else
+ sd_type = SHUTDOWN_REBOOT;
+
+ if (!clean_shutdown(sd_type, callback, parameter))
+ return event;
+ }
break;
#if CONFIG_CHARGING
case SYS_CHARGER_CONNECTED: