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

@@ -8,7 +8,8 @@ static bool momentum_app_custom_event_callback(void* context, uint32_t event) {
void callback_reboot(void* context) {
UNUSED(context);
power_reboot(PowerBootModeNormal);
Power* power = furi_record_open(RECORD_POWER);
power_reboot(power, PowerBootModeNormal);
}
bool momentum_app_apply(MomentumApp* app) {

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"

View File

@@ -12,8 +12,8 @@ enum PowerSettingsSubmenuIndex {
#define SHUTDOWN_IDLE_DELAY_COUNT 9
const char* const shutdown_idle_delay_text[SHUTDOWN_IDLE_DELAY_COUNT] = {
"OFF",
"15min",
"30min",
"15m",
"30m",
"1h",
"2h",
"6h",
@@ -71,7 +71,7 @@ void power_settings_scene_start_on_enter(void* context) {
variable_item_list_set_enter_callback(
variable_item_list, power_settings_scene_start_submenu_callback, app);
view_dispatcher_switch_to_view(app->view_dispatcher, PowerSettingsAppViewSubmenu);
view_dispatcher_switch_to_view(app->view_dispatcher, PowerSettingsAppViewVariableItemList);
}
bool power_settings_scene_start_on_event(void* context, SceneManagerEvent event) {

View File

@@ -53,7 +53,8 @@ void storage_settings_scene_formatting_on_enter(void* context) {
dialog_ex, storage_error_get_desc(error), 64, 32, AlignCenter, AlignCenter);
} else {
if(scene_manager_get_scene_state(app->scene_manager, StorageSettingsFormatting)) {
power_reboot(PowerBootModeNormal);
Power* power = furi_record_open(RECORD_POWER);
power_reboot(power, PowerBootModeNormal);
} else {
dialog_ex_set_icon(dialog_ex, 48, 6, &I_DolphinDone_80x58);
dialog_ex_set_header(dialog_ex, "Formatted", 5, 10, AlignLeft, AlignTop);

View File

@@ -92,10 +92,9 @@ static void js_keyboard_text(struct mjs* mjs) {
view_holder_set_back_callback(keyboard->view_holder, keyboard_exit, keyboard);
view_holder_set_view(keyboard->view_holder, text_input_get_view(keyboard->text_input));
view_holder_start(keyboard->view_holder);
api_lock_wait_unlock(keyboard->lock);
view_holder_stop(keyboard->view_holder);
view_holder_set_view(keyboard->view_holder, NULL);
view_holder_free(keyboard->view_holder);
furi_record_close(RECORD_GUI);
@@ -148,10 +147,9 @@ static void js_keyboard_byte(struct mjs* mjs) {
view_holder_set_back_callback(keyboard->view_holder, keyboard_exit, keyboard);
view_holder_set_view(keyboard->view_holder, byte_input_get_view(keyboard->byte_input));
view_holder_start(keyboard->view_holder);
api_lock_wait_unlock(keyboard->lock);
view_holder_stop(keyboard->view_holder);
view_holder_set_view(keyboard->view_holder, NULL);
view_holder_free(keyboard->view_holder);
furi_record_close(RECORD_GUI);

View File

@@ -825,7 +825,7 @@ static void js_widget_is_open(struct mjs* mjs) {
static void widget_callback(void* context, uint32_t arg) {
UNUSED(arg);
JsWidgetInst* widget = context;
view_holder_stop(widget->view_holder);
view_holder_set_view(widget->view_holder, NULL);
widget->is_shown = false;
}
@@ -845,7 +845,7 @@ static void js_widget_show(struct mjs* mjs) {
return;
}
view_holder_start(widget->view_holder);
view_holder_set_view(widget->view_holder, widget->view);
widget->is_shown = true;
mjs_return(mjs, MJS_UNDEFINED);
@@ -855,7 +855,7 @@ static void js_widget_close(struct mjs* mjs) {
JsWidgetInst* widget = get_this_ctx(mjs);
if(!check_arg_count(mjs, 0)) return;
view_holder_stop(widget->view_holder);
view_holder_set_view(widget->view_holder, NULL);
widget->is_shown = false;
mjs_return(mjs, MJS_UNDEFINED);
@@ -933,7 +933,6 @@ static void* js_widget_create(struct mjs* mjs, mjs_val_t* object) {
widget->view_holder = view_holder_alloc();
view_holder_attach_to_gui(widget->view_holder, gui);
view_holder_set_back_callback(widget->view_holder, widget_exit, widget);
view_holder_set_view(widget->view_holder, widget->view);
*object = widget_obj;
return widget;
@@ -942,7 +941,7 @@ static void* js_widget_create(struct mjs* mjs, mjs_val_t* object) {
static void js_widget_destroy(void* inst) {
JsWidgetInst* widget = inst;
view_holder_stop(widget->view_holder);
view_holder_set_view(widget->view_holder, NULL);
view_holder_free(widget->view_holder);
widget->view_holder = NULL;

View File

@@ -3926,8 +3926,12 @@ Variable,+,I_KeyBackspaceSelected_17x11,const Icon,
Variable,+,I_KeyBackspace_17x11,const Icon,
Variable,+,I_KeyKeyboardSelected_10x11,const Icon,
Variable,+,I_KeyKeyboard_10x11,const Icon,
Variable,+,I_KeySaveBlockedSelected_22x11,const Icon,
Variable,+,I_KeySaveBlocked_22x11,const Icon,
Variable,+,I_KeySaveSelected_22x11,const Icon,
Variable,+,I_KeySave_22x11,const Icon,
Variable,+,I_KeySignSelected_21x11,const Icon,
Variable,+,I_KeySign_21x11,const Icon,
Variable,+,I_Keychain_39x36,const Icon,
Variable,+,I_Left_mouse_icon_9x9,const Icon,
Variable,+,I_LoadingHourglass_24x24,const Icon,
1 entry status name type params
3926 Variable + I_KeyBackspace_17x11 const Icon
3927 Variable + I_KeyKeyboardSelected_10x11 const Icon
3928 Variable + I_KeyKeyboard_10x11 const Icon
3929 Variable + I_KeySaveBlockedSelected_22x11 const Icon
3930 Variable + I_KeySaveBlocked_22x11 const Icon
3931 Variable + I_KeySaveSelected_22x11 const Icon
3932 Variable + I_KeySave_22x11 const Icon
3933 Variable + I_KeySignSelected_21x11 const Icon
3934 Variable + I_KeySign_21x11 const Icon
3935 Variable + I_Keychain_39x36 const Icon
3936 Variable + I_Left_mouse_icon_9x9 const Icon
3937 Variable + I_LoadingHourglass_24x24 const Icon