1
mirror of https://github.com/DarkFlippers/unleashed-firmware.git synced 2025-12-12 12:42:30 +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.error = LoaderStatusErrorUnknown;
LoaderEvent event;
event.type = LoaderEventTypeApplicationBeforeLoad;
furi_pubsub_publish(loader->pubsub, &event);
do {
// check lock
if(loader_do_is_locked(loader)) {
@@ -677,6 +673,17 @@ static LoaderMessageLoaderStatusResult loader_do_start_by_name(
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
{
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
{
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_thread_flags_clear(APPLICATION_STOP_EVENT);
}
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_auto_poweroff_disarm(power);
// arm timer if some apps was not loaded or was stoped
} else if(
event->type == LoaderEventTypeApplicationLoadFailed ||
event->type == LoaderEventTypeApplicationStopped) {
} else if(event->type == LoaderEventTypeNoMoreAppsInQueue) {
power->app_running = false;
power_auto_poweroff_arm(power);
}