From 331f26547bdbf7fab2ec96fe8741693f628ca635 Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Tue, 2 May 2023 22:54:32 +0100 Subject: [PATCH] Add XTREME_SETTINGS_WAIT() for race conditions --- firmware/targets/f7/api_symbols.csv | 1 + lib/xtreme/settings.c | 14 +++++++++++++- lib/xtreme/xtreme.h | 4 +++- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/firmware/targets/f7/api_symbols.csv b/firmware/targets/f7/api_symbols.csv index 784be14a9..2ccfe3ed5 100644 --- a/firmware/targets/f7/api_symbols.csv +++ b/firmware/targets/f7/api_symbols.csv @@ -323,6 +323,7 @@ Function,-,SystemInit,void, Function,+,XTREME_ASSETS,XtremeAssets*, Function,+,XTREME_SETTINGS,XtremeSettings*, Function,+,XTREME_SETTINGS_SAVE,void, +Function,+,XTREME_SETTINGS_WAIT,XtremeSettings*, Function,-,_Exit,void,int Function,-,__assert,void,"const char*, int, const char*" Function,+,__assert_func,void,"const char*, int, const char*, const char*" diff --git a/lib/xtreme/settings.c b/lib/xtreme/settings.c index fe6520808..88aa55b99 100644 --- a/lib/xtreme/settings.c +++ b/lib/xtreme/settings.c @@ -6,6 +6,7 @@ #define TAG "XtremeSettings" XtremeSettings xtreme_settings = { + .loaded = false, .asset_pack = "", .anim_speed = 100, // 100% .cycle_anims = 0, // Meta.txt @@ -27,7 +28,7 @@ XtremeSettings xtreme_settings = { .favorite_timeout = 0, // OFF .bad_bt = false, // USB .bad_bt_remember = false, // OFF - .butthurt_timer = 43200, // 12 H + .butthurt_timer = 21600, // 6 H .rgb_backlight = false, // OFF }; @@ -88,6 +89,8 @@ void XTREME_SETTINGS_LOAD() { } flipper_format_free(file); furi_record_close(RECORD_STORAGE); + + xtreme_settings.loaded = true; } void XTREME_SETTINGS_SAVE() { @@ -128,3 +131,12 @@ void XTREME_SETTINGS_SAVE() { XtremeSettings* XTREME_SETTINGS() { return &xtreme_settings; } + +XtremeSettings* XTREME_SETTINGS_WAIT() { + if(furi_hal_is_normal_boot()) { + while(!xtreme_settings.loaded) { + furi_delay_ms(50); + } + } + return &xtreme_settings; +} diff --git a/lib/xtreme/xtreme.h b/lib/xtreme/xtreme.h index 54c208ae7..1e63f10ec 100644 --- a/lib/xtreme/xtreme.h +++ b/lib/xtreme/xtreme.h @@ -13,6 +13,7 @@ extern "C" { #define XTREME_ASSETS_PACK_NAME_LEN 32 typedef struct { + bool loaded; char asset_pack[XTREME_ASSETS_PACK_NAME_LEN]; uint32_t anim_speed; int32_t cycle_anims; @@ -38,8 +39,9 @@ typedef struct { bool rgb_backlight; } XtremeSettings; -XtremeSettings* XTREME_SETTINGS(); void XTREME_SETTINGS_SAVE(); +XtremeSettings* XTREME_SETTINGS(); +XtremeSettings* XTREME_SETTINGS_WAIT(); typedef struct { bool is_nsfw;