Kaynağa Gözat

[FL-3118] Dumb mode menu freeze fix (#2456)

Co-authored-by: あく <alleteam@gmail.com>
Astra 2 yıl önce
ebeveyn
işleme
50ef5deefc

+ 2 - 0
applications/services/desktop/desktop.c

@@ -144,11 +144,13 @@ void desktop_unlock(Desktop* desktop) {
 }
 }
 
 
 void desktop_set_dummy_mode_state(Desktop* desktop, bool enabled) {
 void desktop_set_dummy_mode_state(Desktop* desktop, bool enabled) {
+    desktop->in_transition = true;
     view_port_enabled_set(desktop->dummy_mode_icon_viewport, enabled);
     view_port_enabled_set(desktop->dummy_mode_icon_viewport, enabled);
     desktop_main_set_dummy_mode_state(desktop->main_view, enabled);
     desktop_main_set_dummy_mode_state(desktop->main_view, enabled);
     animation_manager_set_dummy_mode_state(desktop->animation_manager, enabled);
     animation_manager_set_dummy_mode_state(desktop->animation_manager, enabled);
     desktop->settings.dummy_mode = enabled;
     desktop->settings.dummy_mode = enabled;
     DESKTOP_SETTINGS_SAVE(&desktop->settings);
     DESKTOP_SETTINGS_SAVE(&desktop->settings);
+    desktop->in_transition = false;
 }
 }
 
 
 Desktop* desktop_alloc() {
 Desktop* desktop_alloc() {

+ 2 - 0
applications/services/desktop/desktop_i.h

@@ -69,6 +69,8 @@ struct Desktop {
     FuriPubSub* input_events_pubsub;
     FuriPubSub* input_events_pubsub;
     FuriPubSubSubscription* input_events_subscription;
     FuriPubSubSubscription* input_events_subscription;
     FuriTimer* auto_lock_timer;
     FuriTimer* auto_lock_timer;
+
+    bool in_transition;
 };
 };
 
 
 Desktop* desktop_alloc();
 Desktop* desktop_alloc();

+ 1 - 0
applications/services/desktop/scenes/desktop_scene_main.c

@@ -79,6 +79,7 @@ static void desktop_scene_main_open_app_or_profile(Desktop* desktop, const char*
 
 
 void desktop_scene_main_callback(DesktopEvent event, void* context) {
 void desktop_scene_main_callback(DesktopEvent event, void* context) {
     Desktop* desktop = (Desktop*)context;
     Desktop* desktop = (Desktop*)context;
+    if(desktop->in_transition) return;
     view_dispatcher_send_custom_event(desktop->view_dispatcher, event);
     view_dispatcher_send_custom_event(desktop->view_dispatcher, event);
 }
 }