From 075381b7c61df3f4915fe1284b58a97d5ddb89be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=82=E3=81=8F?= Date: Tue, 9 Jul 2024 22:56:38 +0100 Subject: [PATCH] [FL-3870] Desktop: allow to close blocking bad sd animation (#3776) * Desktop: allow to close blocking bad sd animation * Desktop: pack booleans --- .../desktop/animations/animation_manager.c | 42 +++++++++++-------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/applications/services/desktop/animations/animation_manager.c b/applications/services/desktop/animations/animation_manager.c index 44c0c228c..f4e55adaa 100644 --- a/applications/services/desktop/animations/animation_manager.c +++ b/applications/services/desktop/animations/animation_manager.c @@ -32,11 +32,6 @@ typedef enum { } AnimationManagerState; struct AnimationManager { - bool sd_show_url; - bool sd_shown_no_db; - bool sd_shown_sd_ok; - bool levelup_pending; - bool levelup_active; AnimationManagerState state; FuriPubSubSubscription* pubsub_subscription_storage; FuriPubSubSubscription* pubsub_subscription_dolphin; @@ -51,7 +46,14 @@ struct AnimationManager { FuriString* freezed_animation_name; int32_t freezed_animation_time_left; ViewStack* view_stack; - bool dummy_mode; + + bool dummy_mode : 1; + bool blocking_shown_url : 1; + bool blocking_shown_sd_bad : 1; + bool blocking_shown_no_db : 1; + bool blocking_shown_sd_ok : 1; + bool levelup_pending : 1; + bool levelup_active : 1; }; static StorageAnimation* @@ -214,27 +216,31 @@ static bool animation_manager_check_blocking(AnimationManager* animation_manager FS_Error sd_status = storage_sd_status(storage); if(sd_status == FSE_INTERNAL) { - blocking_animation = animation_storage_find_animation(BAD_SD_ANIMATION_NAME); - furi_assert(blocking_animation); + if(!animation_manager->blocking_shown_sd_bad) { + blocking_animation = animation_storage_find_animation(BAD_SD_ANIMATION_NAME); + furi_assert(blocking_animation); + animation_manager->blocking_shown_sd_bad = true; + } } else if(sd_status == FSE_NOT_READY) { - animation_manager->sd_shown_sd_ok = false; - animation_manager->sd_shown_no_db = false; + animation_manager->blocking_shown_sd_bad = false; + animation_manager->blocking_shown_sd_ok = false; + animation_manager->blocking_shown_no_db = false; } else if(sd_status == FSE_OK) { - if(!animation_manager->sd_shown_sd_ok) { + if(!animation_manager->blocking_shown_sd_ok) { blocking_animation = animation_storage_find_animation(SD_OK_ANIMATION_NAME); furi_assert(blocking_animation); - animation_manager->sd_shown_sd_ok = true; - } else if(!animation_manager->sd_shown_no_db) { + animation_manager->blocking_shown_sd_ok = true; + } else if(!animation_manager->blocking_shown_no_db) { if(!storage_file_exists(storage, EXT_PATH("Manifest"))) { blocking_animation = animation_storage_find_animation(NO_DB_ANIMATION_NAME); furi_assert(blocking_animation); - animation_manager->sd_shown_no_db = true; - animation_manager->sd_show_url = true; + animation_manager->blocking_shown_no_db = true; + animation_manager->blocking_shown_url = true; } - } else if(animation_manager->sd_show_url) { + } else if(animation_manager->blocking_shown_url) { blocking_animation = animation_storage_find_animation(URL_ANIMATION_NAME); furi_assert(blocking_animation); - animation_manager->sd_show_url = false; + animation_manager->blocking_shown_url = false; } } @@ -299,7 +305,7 @@ AnimationManager* animation_manager_alloc(void) { dolphin_get_pubsub(dolphin), animation_manager_check_blocking_callback, animation_manager); furi_record_close(RECORD_DOLPHIN); - animation_manager->sd_shown_sd_ok = true; + animation_manager->blocking_shown_sd_ok = true; if(!animation_manager_check_blocking(animation_manager)) { animation_manager_start_new_idle(animation_manager); }