From 92940f0c196aa89955b5fb02955826a0a3edd597 Mon Sep 17 00:00:00 2001 From: Maciej Gibowicz Date: Tue, 10 May 2022 13:08:37 +0200 Subject: [PATCH] [MOS-453] Fix HF on Low Battery Notification Fix in action handling in ApplicationManager --- .../include/service-appmgr/model/ActionsRegistry.hpp | 3 ++- module-services/service-appmgr/model/ActionsRegistry.cpp | 7 ++++++- .../service-appmgr/model/ApplicationManagerCommon.cpp | 8 ++++---- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/module-services/service-appmgr/include/service-appmgr/model/ActionsRegistry.hpp b/module-services/service-appmgr/include/service-appmgr/model/ActionsRegistry.hpp index ca8662e9359555eb6a693620973eef1730127116..32fb1ce46dc34c9eaa80ecb6c94f9eb6795b038d 100644 --- a/module-services/service-appmgr/include/service-appmgr/model/ActionsRegistry.hpp +++ b/module-services/service-appmgr/include/service-appmgr/model/ActionsRegistry.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. +// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #pragma once @@ -54,6 +54,7 @@ namespace app::manager void enqueue(ActionEntry &&action); void finished(); + void process(); [[nodiscard]] auto hasPendingAction() const noexcept -> bool; [[nodiscard]] auto getPendingAction() noexcept -> ActionEntry *; diff --git a/module-services/service-appmgr/model/ActionsRegistry.cpp b/module-services/service-appmgr/model/ActionsRegistry.cpp index f3dd0893f2eef82c6fe4749e10ac86cdf0ba0e00..a20b87b56fdc17aae4e6b74a91e32aa764757267 100644 --- a/module-services/service-appmgr/model/ActionsRegistry.cpp +++ b/module-services/service-appmgr/model/ActionsRegistry.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. +// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include "ActionsRegistry.hpp" @@ -53,6 +53,11 @@ namespace app::manager LOG_INFO("Enqueue action %s", magic_enum::enum_name(action.actionId).data()); addAction(std::move(action)); + process(); + } + + void ActionsRegistry::process() + { if (!isCurrentlyProcessing()) { notifyAboutNextAction(); } diff --git a/module-services/service-appmgr/model/ApplicationManagerCommon.cpp b/module-services/service-appmgr/model/ApplicationManagerCommon.cpp index 60192733495db68abdfff613daf75cd37633054b..72a94b5d51ee1d35ae2092d930dc68e731a6c408 100644 --- a/module-services/service-appmgr/model/ApplicationManagerCommon.cpp +++ b/module-services/service-appmgr/model/ApplicationManagerCommon.cpp @@ -560,8 +560,9 @@ namespace app::manager (actionParams && actionParams->disableAppClose)); SwitchRequest switchRequest( service::name::appmgr, targetApp->name(), targetApp->switchWindow, std::move(targetApp->switchData)); - return handleSwitchApplication(&switchRequest, focusedAppClose) ? ActionProcessStatus::Accepted - : ActionProcessStatus::Skipped; + handleSwitchApplication(&switchRequest, focusedAppClose); + + return ActionProcessStatus::Skipped; } auto ApplicationManagerCommon::handleCustomActionOnBackgroundApp(ApplicationHandle *app, ActionEntry &action) @@ -749,6 +750,7 @@ namespace app::manager app.startupReason = StartupReason::Launch; if (!actionsRegistry.hasPendingAction()) { + actionsRegistry.process(); return; } @@ -764,8 +766,6 @@ namespace app::manager actionsRegistry.finished(); break; default: { - auto ¶ms = action->params; - app::ApplicationCommon::requestAction(this, app.name(), action->actionId, std::move(params)); break; } }