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:
@@ -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);
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user