1
mirror of https://github.com/DarkFlippers/unleashed-firmware.git synced 2025-12-12 20:49:49 +04:00

Merge pull request #905 from WillyJL/fix/loader-events

Loader: Fix misplaced ApplicationBeforeLoad events
This commit is contained in:
MMX
2025-06-11 18:08:49 +03:00
committed by GitHub
3 changed files with 13 additions and 14 deletions

View File

@@ -654,10 +654,6 @@ static LoaderMessageLoaderStatusResult loader_do_start_by_name(
status.value = loader_make_success_status(error_message); status.value = loader_make_success_status(error_message);
status.error = LoaderStatusErrorUnknown; status.error = LoaderStatusErrorUnknown;
LoaderEvent event;
event.type = LoaderEventTypeApplicationBeforeLoad;
furi_pubsub_publish(loader->pubsub, &event);
do { do {
// check lock // check lock
if(loader_do_is_locked(loader)) { if(loader_do_is_locked(loader)) {
@@ -677,6 +673,17 @@ static LoaderMessageLoaderStatusResult loader_do_start_by_name(
break; break;
} }
// check Applications
if(strcmp(name, LOADER_APPLICATIONS_NAME) == 0) {
loader_do_applications_show(loader);
status.value = loader_make_success_status(error_message);
break;
}
LoaderEvent event;
event.type = LoaderEventTypeApplicationBeforeLoad;
furi_pubsub_publish(loader->pubsub, &event);
// check internal apps // check internal apps
{ {
const FlipperInternalApplication* app = loader_find_application_by_name(name); const FlipperInternalApplication* app = loader_find_application_by_name(name);
@@ -687,13 +694,6 @@ static LoaderMessageLoaderStatusResult loader_do_start_by_name(
} }
} }
// check Applications
if(strcmp(name, LOADER_APPLICATIONS_NAME) == 0) {
loader_do_applications_show(loader);
status.value = loader_make_success_status(error_message);
break;
}
// check External Applications // check External Applications
{ {
const char* path = loader_find_external_application_by_name(name); const char* path = loader_find_external_application_by_name(name);

View File

@@ -141,6 +141,7 @@ static void
} }
furi_pubsub_unsubscribe(loader_get_pubsub(app->loader), subscription); furi_pubsub_unsubscribe(loader_get_pubsub(app->loader), subscription);
furi_thread_flags_clear(APPLICATION_STOP_EVENT);
} }
static int32_t loader_applications_thread(void* p) { static int32_t loader_applications_thread(void* p) {

View File

@@ -487,9 +487,7 @@ static void power_loader_callback(const void* message, void* context) {
power->app_running = true; power->app_running = true;
power_auto_poweroff_disarm(power); power_auto_poweroff_disarm(power);
// arm timer if some apps was not loaded or was stoped // arm timer if some apps was not loaded or was stoped
} else if( } else if(event->type == LoaderEventTypeNoMoreAppsInQueue) {
event->type == LoaderEventTypeApplicationLoadFailed ||
event->type == LoaderEventTypeApplicationStopped) {
power->app_running = false; power->app_running = false;
power_auto_poweroff_arm(power); power_auto_poweroff_arm(power);
} }