diff --git a/applications/services/loader/loader.c b/applications/services/loader/loader.c index 01de5af21..74dd4bc3e 100644 --- a/applications/services/loader/loader.c +++ b/applications/services/loader/loader.c @@ -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); diff --git a/applications/services/loader/loader_applications.c b/applications/services/loader/loader_applications.c index b83083000..64b471cc9 100644 --- a/applications/services/loader/loader_applications.c +++ b/applications/services/loader/loader_applications.c @@ -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) {