Unique ptr for xtreme settings, no more loading

This commit is contained in:
Willy-JL
2023-01-17 15:45:39 +00:00
parent 067f7bd3f5
commit 483d96f447
6 changed files with 34 additions and 20 deletions

View File

@@ -201,8 +201,7 @@ static void animation_manager_start_new_idle(AnimationManager* animation_manager
const BubbleAnimation* bubble_animation =
animation_storage_get_bubble_animation(animation_manager->current_animation);
animation_manager->state = AnimationManagerStateIdle;
XtremeSettings* xtreme = malloc(sizeof(XtremeSettings));
XTREME_SETTINGS_LOAD(xtreme);
XtremeSettings* xtreme = XTREME_SETTINGS();
int32_t duration = 0;
if (xtreme->cycle_animation == 0) {
duration = bubble_animation->duration;
@@ -210,7 +209,6 @@ static void animation_manager_start_new_idle(AnimationManager* animation_manager
duration = xtreme->cycle_animation;
}
furi_timer_start(animation_manager->idle_animation_timer, duration * 1000);
free(xtreme);
}
static bool animation_manager_check_blocking(AnimationManager* animation_manager) {
@@ -520,8 +518,7 @@ void animation_manager_load_and_continue_animation(AnimationManager* animation_m
} else {
const BubbleAnimation* bubble_animation = animation_storage_get_bubble_animation(
animation_manager->current_animation);
XtremeSettings* xtreme = malloc(sizeof(XtremeSettings));
XTREME_SETTINGS_LOAD(xtreme);
XtremeSettings* xtreme = XTREME_SETTINGS();
int32_t duration = 0;
if (xtreme->cycle_animation == 0) {
duration = bubble_animation->duration;
@@ -530,7 +527,6 @@ void animation_manager_load_and_continue_animation(AnimationManager* animation_m
}
furi_timer_start(
animation_manager->idle_animation_timer, duration * 1000);
free(xtreme);
}
}
} else {

View File

@@ -22,14 +22,15 @@ const int32_t cycle_animation_values[CYCLE_ANIMATION_COUNT] =
{-1, 0, 30, 60, 300, 600, 900, 1800, 3600, 7200, 21600, 43200, 86400};
static void xtreme_settings_scene_start_cycle_animation_changed(VariableItem* item) {
XtremeSettingsApp* app = variable_item_get_context(item);
uint8_t index = variable_item_get_current_value_index(item);
variable_item_set_current_value_text(item, cycle_animation_names[index]);
app->settings.cycle_animation = cycle_animation_values[index];
XTREME_SETTINGS()->cycle_animation = cycle_animation_values[index];
XTREME_SETTINGS_SAVE();
}
void xtreme_settings_scene_start_on_enter(void* context) {
XtremeSettingsApp* app = context;
XtremeSettings* xtreme = XTREME_SETTINGS();
VariableItemList* var_item_list = app->var_item_list;
VariableItem* item;
uint8_t value_index;
@@ -40,9 +41,8 @@ void xtreme_settings_scene_start_on_enter(void* context) {
CYCLE_ANIMATION_COUNT,
xtreme_settings_scene_start_cycle_animation_changed,
app);
value_index = value_index_int32(
app->settings.cycle_animation, cycle_animation_values, CYCLE_ANIMATION_COUNT);
xtreme->unlock_animations, cycle_animation_values, CYCLE_ANIMATION_COUNT);
variable_item_set_current_value_index(item, value_index);
variable_item_set_current_value_text(item, cycle_animation_names[value_index]);

View File

@@ -1,18 +1,35 @@
#include "xtreme_settings.h"
bool XTREME_SETTINGS_LOAD(XtremeSettings* xtreme_settings) {
XtremeSettings* xtreme_settings = NULL;
XtremeSettings* XTREME_SETTINGS() {
if (xtreme_settings == NULL) {
xtreme_settings = malloc(sizeof(XtremeSettings));
_XTREME_SETTINGS_LOAD(xtreme_settings);
}
return xtreme_settings;
}
bool XTREME_SETTINGS_SAVE() {
if (xtreme_settings == NULL) {
XTREME_SETTINGS();
}
return _XTREME_SETTINGS_SAVE(xtreme_settings);
}
bool _XTREME_SETTINGS_LOAD(XtremeSettings* xtreme_settings) {
furi_assert(xtreme_settings);
bool loaded = saved_struct_load(
XTREME_SETTINGS_PATH, xtreme_settings, sizeof(XtremeSettings), XTREME_SETTINGS_MAGIC, XTREME_SETTINGS_VERSION);
if(!loaded) {
memset(xtreme_settings, 0, sizeof(XtremeSettings));
loaded = XTREME_SETTINGS_SAVE(xtreme_settings);
loaded = _XTREME_SETTINGS_SAVE(xtreme_settings);
}
return loaded;
}
bool XTREME_SETTINGS_SAVE(XtremeSettings* xtreme_settings) {
bool _XTREME_SETTINGS_SAVE(XtremeSettings* xtreme_settings) {
furi_assert(xtreme_settings);
return saved_struct_save(

View File

@@ -14,9 +14,14 @@
typedef struct {
int32_t cycle_animation;
bool unlock_animations;
// uint8_t sfw_mode;
} XtremeSettings;
bool XTREME_SETTINGS_LOAD(XtremeSettings* xtreme_settings);
XtremeSettings* XTREME_SETTINGS();
bool XTREME_SETTINGS_SAVE(XtremeSettings* xtreme_settings);
bool XTREME_SETTINGS_SAVE();
bool _XTREME_SETTINGS_LOAD(XtremeSettings* xtreme_settings);
bool _XTREME_SETTINGS_SAVE(XtremeSettings* xtreme_settings);

View File

@@ -14,9 +14,6 @@ static bool xtreme_settings_back_event_callback(void* context) {
XtremeSettingsApp* xtreme_settings_app_alloc() {
XtremeSettingsApp* app = malloc(sizeof(XtremeSettingsApp));
// Load settings
XTREME_SETTINGS_LOAD(&app->settings);
app->gui = furi_record_open(RECORD_GUI);
// View Dispatcher and Scene Manager
@@ -46,7 +43,7 @@ XtremeSettingsApp* xtreme_settings_app_alloc() {
void xtreme_settings_app_free(XtremeSettingsApp* app) {
furi_assert(app);
XTREME_SETTINGS_SAVE(&app->settings);
// Gui modules
view_dispatcher_remove_view(app->view_dispatcher, XtremeSettingsAppViewVarItemList);
variable_item_list_free(app->var_item_list);

View File

@@ -11,7 +11,6 @@
#include "scenes/xtreme_settings_scene.h"
typedef struct {
XtremeSettings settings;
Gui* gui;
SceneManager* scene_manager;
ViewDispatcher* view_dispatcher;