From be4a778ab05af9225942cabe9f0315776fcdabbd Mon Sep 17 00:00:00 2001 From: houdisheng Date: Wed, 22 Jun 2022 17:01:48 +0800 Subject: [PATCH] =?UTF-8?q?windowmanager=E8=A7=A3=E5=86=BB=E6=A1=A9?= =?UTF-8?q?=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: houdisheng --- windowmanager_aafwk.gni | 8 ++++++++ wm/BUILD.gn | 6 ++++++ wm/src/window_manager.cpp | 7 +++++++ 3 files changed, 21 insertions(+) diff --git a/windowmanager_aafwk.gni b/windowmanager_aafwk.gni index 3b87d4be..828292dd 100644 --- a/windowmanager_aafwk.gni +++ b/windowmanager_aafwk.gni @@ -16,3 +16,11 @@ aafwk_inner_api_path = aafwk_kits_path = "//foundation/ability/ability_runtime/frameworks/kits" aafwk_path = "//foundation/ability/ability_runtime" aafwk_services_path = "//foundation/ability/ability_runtime/services" + +declare_args() { + suspend_manager_enable = true + if (defined(global_parts_info) && + !defined(global_parts_info.resourceschedule_suspend_manager)) { + suspend_manager_enable = false + } +} \ No newline at end of file diff --git a/wm/BUILD.gn b/wm/BUILD.gn index e57dcb7f..aaa03045 100644 --- a/wm/BUILD.gn +++ b/wm/BUILD.gn @@ -93,6 +93,12 @@ ohos_shared_library("libwm") { "utils_base:utils", ] + defines = [] + if (suspend_manager_enable) { + external_deps += [ "suspend_manager:suspend_manager_client" ] + defines += [ "SUSPEND_MANAGER_ENABLE" ] + } + part_name = "window_manager" subsystem_name = "window" } diff --git a/wm/src/window_manager.cpp b/wm/src/window_manager.cpp index 34aa8956..8301cda1 100644 --- a/wm/src/window_manager.cpp +++ b/wm/src/window_manager.cpp @@ -25,6 +25,9 @@ #include "window_manager_agent.h" #include "window_manager_hilog.h" #include "wm_common.h" +#ifdef SUSPEND_MANAGER_ENABLE +#include "suspend_manager_client.h" +#endif // SUSPEND_MANAGER_ENABLE namespace OHOS { namespace Rosen { @@ -476,6 +479,10 @@ void WindowManager::UpdateFocusChangeInfo(const sptr& focusChan WLOGFI("window focus change: %{public}d, id: %{public}u", focused, focusChangeInfo->windowId_); std::lock_guard lock(pImpl_->mutex_); if (focused) { +#ifdef SUSPEND_MANAGER_ENABLE + SuspendManager::SuspendManagerClient::GetInstance().ThawOneApplication( + focusChangeInfo->uid_, "", SuspendManager::THAW_BY_FOCUS_CHANGED); +#endif // SUSPEND_MANAGER_ENABLE pImpl_->NotifyFocused(focusChangeInfo); } else { pImpl_->NotifyUnfocused(focusChangeInfo);