diff --git a/applications/services/desktop/desktop.c b/applications/services/desktop/desktop.c index 002870e0a..d618f14df 100644 --- a/applications/services/desktop/desktop.c +++ b/applications/services/desktop/desktop.c @@ -441,6 +441,7 @@ void desktop_unlock(Desktop* desktop) { } int32_t desktop_shutdown(void* context) { + // Attempt to launch the app, and if failed offer to shutdown (simpler UI) Desktop* desktop = context; LoaderStatus result = loader_start(desktop->loader, "Power", "off", NULL); if(result != LoaderStatusOk) { diff --git a/applications/services/desktop/scenes/desktop_scene_locked.c b/applications/services/desktop/scenes/desktop_scene_locked.c index 5f5013c73..c15ca4e10 100644 --- a/applications/services/desktop/scenes/desktop_scene_locked.c +++ b/applications/services/desktop/scenes/desktop_scene_locked.c @@ -84,6 +84,7 @@ bool desktop_scene_locked_on_event(void* context, SceneManagerEvent event) { switch(event.event) { case DesktopLockedEventOpenPowerOff: { if(momentum_settings.lockscreen_poweroff) { + // Workaround for shutdown when app can't be opened run_parallel(desktop_shutdown, desktop, 512); } consumed = true; diff --git a/applications/services/desktop/scenes/desktop_scene_main.c b/applications/services/desktop/scenes/desktop_scene_main.c index c3c0334e3..a1f4df3e8 100644 --- a/applications/services/desktop/scenes/desktop_scene_main.c +++ b/applications/services/desktop/scenes/desktop_scene_main.c @@ -120,6 +120,7 @@ bool desktop_scene_main_on_event(void* context, SceneManagerEvent event) { break; case DesktopMainEventOpenPowerOff: { + // Workaround for shutdown when app can't be opened run_parallel(desktop_shutdown, desktop, 512); consumed = true; break;