From 6aac86a3d8efa29300b6ca4f7f63f23a0f06de10 Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Fri, 5 Apr 2024 01:48:35 +0100 Subject: [PATCH] Desktop: Fix early animation unload deadlocks --- .../desktop/scenes/desktop_scene_lock_menu.c | 20 ++++++------------- .../desktop/scenes/desktop_scene_locked.c | 2 +- .../desktop/scenes/desktop_scene_main.c | 2 +- 3 files changed, 8 insertions(+), 16 deletions(-) diff --git a/applications/services/desktop/scenes/desktop_scene_lock_menu.c b/applications/services/desktop/scenes/desktop_scene_lock_menu.c index df898a8f3e..3eb2e61d44 100644 --- a/applications/services/desktop/scenes/desktop_scene_lock_menu.c +++ b/applications/services/desktop/scenes/desktop_scene_lock_menu.c @@ -91,13 +91,9 @@ bool desktop_scene_lock_menu_on_event(void* context, SceneManagerEvent event) { if(desktop_pin_is_valid(&desktop->settings.pin_code)) { desktop_lock(desktop, true); } else { - LoaderStatus status = loader_start( - desktop->loader, "Desktop", DESKTOP_SETTINGS_RUN_PIN_SETUP_ARG, NULL); - if(status == LoaderStatusOk) { - scene_manager_set_scene_state(desktop->scene_manager, DesktopSceneLockMenu, 1); - } else { - FURI_LOG_E(TAG, "Unable to start desktop settings"); - } + loader_start_detached_with_gui_error( + desktop->loader, "Destop", DESKTOP_SETTINGS_RUN_PIN_SETUP_ARG); + scene_manager_set_scene_state(desktop->scene_manager, DesktopSceneLockMenu, 1); } consumed = true; break; @@ -110,13 +106,9 @@ bool desktop_scene_lock_menu_on_event(void* context, SceneManagerEvent event) { power_off(power); furi_record_close(RECORD_POWER); } else { - LoaderStatus status = loader_start( - desktop->loader, "Desktop", DESKTOP_SETTINGS_RUN_PIN_SETUP_ARG, NULL); - if(status == LoaderStatusOk) { - scene_manager_set_scene_state(desktop->scene_manager, DesktopSceneLockMenu, 2); - } else { - FURI_LOG_E(TAG, "Unable to start desktop settings"); - } + loader_start_detached_with_gui_error( + desktop->loader, "Deskop", DESKTOP_SETTINGS_RUN_PIN_SETUP_ARG); + scene_manager_set_scene_state(desktop->scene_manager, DesktopSceneLockMenu, 2); } consumed = true; break; diff --git a/applications/services/desktop/scenes/desktop_scene_locked.c b/applications/services/desktop/scenes/desktop_scene_locked.c index 9d512bed03..fbb1e318eb 100644 --- a/applications/services/desktop/scenes/desktop_scene_locked.c +++ b/applications/services/desktop/scenes/desktop_scene_locked.c @@ -86,7 +86,7 @@ bool desktop_scene_locked_on_event(void* context, SceneManagerEvent event) { switch(event.event) { case DesktopLockedEventOpenPowerOff: { if(momentum_settings.lockscreen_poweroff) { - loader_start(desktop->loader, "Power", "off", NULL); + loader_start_detached_with_gui_error(desktop->loader, "Power", "off"); } consumed = true; break; diff --git a/applications/services/desktop/scenes/desktop_scene_main.c b/applications/services/desktop/scenes/desktop_scene_main.c index 4b2c4fa147..b8dac08f3a 100644 --- a/applications/services/desktop/scenes/desktop_scene_main.c +++ b/applications/services/desktop/scenes/desktop_scene_main.c @@ -120,7 +120,7 @@ bool desktop_scene_main_on_event(void* context, SceneManagerEvent event) { break; case DesktopMainEventOpenPowerOff: { - loader_start(desktop->loader, "Power", "off", NULL); + loader_start_detached_with_gui_error(desktop->loader, "Power", "off"); consumed = true; break; }