Преглед изворни кода

Color Guess: Fix some memory management

Willy-JL пре 1 година
родитељ
комит
a49ef3837a

+ 21 - 17
color_guess/color_guess.c

@@ -34,8 +34,7 @@ ColorGuess* color_guess_app_alloc() {
     // Load configs
     // Load configs
     color_guess_read_settings(app);
     color_guess_read_settings(app);
 
 
-    NotificationApp* notification = furi_record_open(RECORD_NOTIFICATION);
-    notification_message(notification, &sequence_display_backlight_on);
+    notification_message(app->notification, &sequence_display_backlight_on);
 
 
     //Scene additions
     //Scene additions
     app->view_dispatcher = view_dispatcher_alloc();
     app->view_dispatcher = view_dispatcher_alloc();
@@ -49,30 +48,30 @@ ColorGuess* color_guess_app_alloc() {
         app->view_dispatcher, color_guess_tick_event_callback, 100);
         app->view_dispatcher, color_guess_tick_event_callback, 100);
     view_dispatcher_set_custom_event_callback(
     view_dispatcher_set_custom_event_callback(
         app->view_dispatcher, color_guess_custom_event_callback);
         app->view_dispatcher, color_guess_custom_event_callback);
-    app->submenu = submenu_alloc();
 
 
-    view_dispatcher_add_view(
-        app->view_dispatcher, ColorGuessViewIdMenu, submenu_get_view(app->submenu));
-    app->variable_item_list = variable_item_list_alloc();
-    view_dispatcher_add_view(
-        app->view_dispatcher,
-        ColorGuessViewIdSettings,
-        variable_item_list_get_view(app->variable_item_list));
     app->color_guess_startscreen = color_guess_startscreen_alloc();
     app->color_guess_startscreen = color_guess_startscreen_alloc();
     view_dispatcher_add_view(
     view_dispatcher_add_view(
         app->view_dispatcher,
         app->view_dispatcher,
         ColorGuessViewIdStartscreen,
         ColorGuessViewIdStartscreen,
         color_guess_startscreen_get_view(app->color_guess_startscreen));
         color_guess_startscreen_get_view(app->color_guess_startscreen));
+    app->submenu = submenu_alloc();
+    view_dispatcher_add_view(
+        app->view_dispatcher, ColorGuessViewIdMenu, submenu_get_view(app->submenu));
+    app->color_guess_play = color_guess_play_alloc();
+    view_dispatcher_add_view(
+        app->view_dispatcher,
+        ColorGuessViewIdPlay,
+        color_guess_play_get_view(app->color_guess_play));
     app->color_guess_color_set = color_guess_color_set_alloc();
     app->color_guess_color_set = color_guess_color_set_alloc();
     view_dispatcher_add_view(
     view_dispatcher_add_view(
         app->view_dispatcher,
         app->view_dispatcher,
         ColorGuessViewIdColorSet,
         ColorGuessViewIdColorSet,
         color_guess_color_set_get_view(app->color_guess_color_set));
         color_guess_color_set_get_view(app->color_guess_color_set));
-    app->color_guess_play = color_guess_play_alloc();
+    app->variable_item_list = variable_item_list_alloc();
     view_dispatcher_add_view(
     view_dispatcher_add_view(
         app->view_dispatcher,
         app->view_dispatcher,
-        ColorGuessViewIdPlay,
-        color_guess_play_get_view(app->color_guess_play));
+        ColorGuessViewIdSettings,
+        variable_item_list_get_view(app->variable_item_list));
 
 
     //End Scene Additions
     //End Scene Additions
 
 
@@ -86,16 +85,21 @@ void color_guess_app_free(ColorGuess* app) {
     scene_manager_free(app->scene_manager);
     scene_manager_free(app->scene_manager);
 
 
     // View Dispatcher
     // View Dispatcher
-    view_dispatcher_remove_view(app->view_dispatcher, ColorGuessViewIdMenu);
     view_dispatcher_remove_view(app->view_dispatcher, ColorGuessViewIdStartscreen);
     view_dispatcher_remove_view(app->view_dispatcher, ColorGuessViewIdStartscreen);
-    view_dispatcher_remove_view(app->view_dispatcher, ColorGuessViewIdColorSet);
+    color_guess_startscreen_free(app->color_guess_startscreen);
+    view_dispatcher_remove_view(app->view_dispatcher, ColorGuessViewIdMenu);
+    submenu_free(app->submenu);
     view_dispatcher_remove_view(app->view_dispatcher, ColorGuessViewIdPlay);
     view_dispatcher_remove_view(app->view_dispatcher, ColorGuessViewIdPlay);
+    color_guess_play_free(app->color_guess_play);
+    view_dispatcher_remove_view(app->view_dispatcher, ColorGuessViewIdColorSet);
+    color_guess_color_set_free(app->color_guess_color_set);
     view_dispatcher_remove_view(app->view_dispatcher, ColorGuessViewIdSettings);
     view_dispatcher_remove_view(app->view_dispatcher, ColorGuessViewIdSettings);
-    submenu_free(app->submenu);
+    variable_item_list_free(app->variable_item_list);
 
 
     view_dispatcher_free(app->view_dispatcher);
     view_dispatcher_free(app->view_dispatcher);
 
 
-    // GUI
+    // Records
+    furi_record_close(RECORD_NOTIFICATION);
     furi_record_close(RECORD_GUI);
     furi_record_close(RECORD_GUI);
 
 
     app->view_port = NULL;
     app->view_port = NULL;

+ 0 - 2
color_guess/views/color_guess_play.c

@@ -330,8 +330,6 @@ ColorGuessPlay* color_guess_play_alloc() {
 void color_guess_play_free(ColorGuessPlay* instance) {
 void color_guess_play_free(ColorGuessPlay* instance) {
     furi_assert(instance);
     furi_assert(instance);
 
 
-    with_view_model(
-        instance->view, ColorGuessPlayModel * model, { free(model); }, true);
     view_free(instance->view);
     view_free(instance->view);
     free(instance);
     free(instance);
 }
 }

+ 0 - 2
color_guess/views/color_guess_startscreen.c

@@ -115,8 +115,6 @@ ColorGuessStartscreen* color_guess_startscreen_alloc() {
 void color_guess_startscreen_free(ColorGuessStartscreen* instance) {
 void color_guess_startscreen_free(ColorGuessStartscreen* instance) {
     furi_assert(instance);
     furi_assert(instance);
 
 
-    with_view_model(
-        instance->view, ColorGuessStartscreenModel * model, { UNUSED(model); }, true);
     view_free(instance->view);
     view_free(instance->view);
     free(instance);
     free(instance);
 }
 }