Final merge fixes

This commit is contained in:
Willy-JL
2024-08-14 02:01:04 +02:00
parent 1a1b3f117a
commit 574304f715
12 changed files with 46 additions and 33 deletions

View File

@@ -59,10 +59,12 @@ static void desktop_scene_pin_input_done_callback(const DesktopPinCode* pin_code
} else {
uint32_t pin_fails = furi_hal_rtc_get_pin_fails() + 1;
if(pin_fails >= 10 && momentum_settings.bad_pins_format) {
storage_sd_format(furi_record_open(RECORD_STORAGE));
Storage* storage = furi_record_open(RECORD_STORAGE);
storage_sd_format(storage);
furi_record_close(RECORD_STORAGE);
furi_hal_rtc_reset_registers();
power_reboot(PowerBootModeNormal);
Power* power = furi_record_open(RECORD_POWER);
power_reboot(power, PowerBootModeNormal);
}
furi_hal_rtc_set_pin_fails(pin_fails);
view_dispatcher_send_custom_event(

View File

@@ -285,13 +285,13 @@ static void number_input_view_draw_callback(Canvas* canvas, void* _model) {
canvas,
keyboard_origin_x + keys[column].x,
keyboard_origin_y + keys[column].y,
&I_KeyBackspaceSelected_16x9);
&I_KeyBackspaceSelected_17x11);
} else {
canvas_draw_icon(
canvas,
keyboard_origin_x + keys[column].x,
keyboard_origin_y + keys[column].y,
&I_KeyBackspace_16x9);
&I_KeyBackspace_17x11);
}
} else if(keys[column].text == sign_symbol) {
if(model->selected_row == row && model->selected_column == column) {

View File

@@ -63,13 +63,6 @@ static void loader_pubsub_callback(const void* message, void* context) {
}
}
static void loader_menu_set_view(LoaderMenu* loader_menu, View* view) {
view_holder_set_view(loader_menu->view_holder, view);
if(view) {
view_holder_update(view, loader_menu->view_holder);
}
}
static void loader_menu_dummy_draw(Canvas* canvas, void* context) {
UNUSED(context);
@@ -101,7 +94,7 @@ LoaderMenu* loader_menu_alloc(void (*closed_cb)(void*), void* context, bool sett
loader_menu->view_holder = view_holder_alloc();
view_holder_attach_to_gui(loader_menu->view_holder, gui);
view_holder_set_back_callback(loader_menu->view_holder, NULL, NULL);
loader_menu_set_view(loader_menu, loader_menu->dummy);
view_holder_set_view(loader_menu->view_holder, loader_menu->dummy);
loader_menu->loader = furi_record_open(RECORD_LOADER);
loader_menu->subscription = furi_pubsub_subscribe(
@@ -123,6 +116,7 @@ void loader_menu_free(LoaderMenu* loader_menu) {
furi_thread_free(loader_menu->thread);
}
view_holder_set_view(loader_menu->view_holder, NULL);
view_holder_free(loader_menu->view_holder);
furi_record_close(RECORD_GUI);
@@ -180,10 +174,18 @@ static void loader_menu_settings_menu_callback(void* context, uint32_t index) {
loader_menu_start(name);
}
// Can't do this in GUI callbacks because now ViewHolder waits for ongoing
// input, and inputs are not processed because GUI is processing callbacks
static void loader_menu_set_view_pending(void* context, uint32_t arg) {
LoaderMenuApp* app = context;
view_holder_set_view(app->loader_menu->view_holder, (View*)arg);
}
static void loader_menu_switch_to_settings(void* context, uint32_t index) {
UNUSED(index);
LoaderMenuApp* app = context;
loader_menu_set_view(app->loader_menu, submenu_get_view(app->settings_menu));
furi_timer_pending_callback(
loader_menu_set_view_pending, app, (uint32_t)submenu_get_view(app->settings_menu));
app->loader_menu->current_view = LoaderMenuViewSettings;
}
@@ -191,7 +193,8 @@ static void loader_menu_back(void* context) {
LoaderMenuApp* app = context;
if(app->loader_menu->current_view == LoaderMenuViewSettings &&
!app->loader_menu->settings_only) {
loader_menu_set_view(app->loader_menu, menu_get_view(app->primary_menu));
furi_timer_pending_callback(
loader_menu_set_view_pending, app, (uint32_t)menu_get_view(app->primary_menu));
app->loader_menu->current_view = LoaderMenuViewPrimary;
} else {
furi_thread_flags_set(furi_thread_get_id(app->loader_menu->thread), 0);
@@ -364,7 +367,7 @@ static LoaderMenuApp* loader_menu_app_alloc(LoaderMenu* loader_menu) {
View* view = app->loader_menu->current_view == LoaderMenuViewSettings ?
submenu_get_view(app->settings_menu) :
menu_get_view(app->primary_menu);
loader_menu_set_view(app->loader_menu, view);
view_holder_set_view(app->loader_menu->view_holder, view);
view_holder_set_back_callback(app->loader_menu->view_holder, loader_menu_back, app);
return app;
@@ -372,7 +375,7 @@ static LoaderMenuApp* loader_menu_app_alloc(LoaderMenu* loader_menu) {
static void loader_menu_app_free(LoaderMenuApp* app) {
view_holder_set_back_callback(app->loader_menu->view_holder, NULL, NULL);
loader_menu_set_view(app->loader_menu, app->loader_menu->dummy);
view_holder_set_view(app->loader_menu->view_holder, app->loader_menu->dummy);
if(!app->loader_menu->settings_only) {
app->loader_menu->selected_primary = menu_get_selected_item(app->primary_menu);

View File

@@ -2,6 +2,7 @@
#include <furi.h>
#include <furi_hal.h>
#include <loader/loader.h>
#include <momentum/momentum.h>
#include <update_util/update_operation.h>
@@ -598,7 +599,6 @@ static Power* power_alloc(void) {
power->ascii_events_pubsub = furi_record_open(RECORD_ASCII_EVENTS);
power->auto_shutdown_timer =
furi_timer_alloc(power_auto_shutdown_timer_callback, FuriTimerTypeOnce, power);
power->app_running = loader_is_locked(loader);
power->view_holder = view_holder_alloc();
power->view_power_off = power_off_alloc();
@@ -634,10 +634,16 @@ int32_t power_srv(void* p) {
}
Power* power = power_alloc();
power_init_settings(power);
power_update_info(power);
furi_record_create(RECORD_POWER, power);
// Can't be done in alloc, other things in startup need power service and it would deadlock by waiting for loader
Loader* loader = furi_record_open(RECORD_LOADER);
power->app_running = loader_is_locked(loader);
furi_record_close(RECORD_LOADER);
power_init_settings(power);
furi_event_loop_run(power->event_loop);
return 0;

View File

@@ -7,7 +7,6 @@
#include <toolbox/api_lock.h>
#include <assets_icons.h>
#include <loader/loader.h>
#include "views/power_off.h"
#include "views/power_unplug_usb.h"