From 9df1dadd3ed6842ee2987613efa9bcb97dfd9ca2 Mon Sep 17 00:00:00 2001 From: chenqinxin Date: Thu, 10 Feb 2022 11:48:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=AE=E7=81=AD=E5=B1=8F=E5=9C=BA=E6=99=AF?= =?UTF-8?q?=E4=B8=8B=E8=B0=83=E7=94=A8AMS=E5=89=8D=E5=90=8E=E5=8F=B0?= =?UTF-8?q?=E5=88=87=E6=8D=A2=E6=8E=A5=E5=8F=A3=E5=B9=B6=E4=BC=A0=E5=85=A5?= =?UTF-8?q?flag?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: chenqinxin Change-Id: Id2f483168cbad29581165d17662b4a836f6e06aa --- dmserver/include/display_power_controller.h | 1 + dmserver/src/display_power_controller.cpp | 9 +++++++-- wm/src/window_impl.cpp | 10 ++++++++++ wmserver/src/window_controller.cpp | 2 +- wmserver/src/window_manager_service.cpp | 1 - wmserver/src/window_node_container.cpp | 5 +++-- 6 files changed, 22 insertions(+), 6 deletions(-) diff --git a/dmserver/include/display_power_controller.h b/dmserver/include/display_power_controller.h index 447b7737..6da20ef7 100644 --- a/dmserver/include/display_power_controller.h +++ b/dmserver/include/display_power_controller.h @@ -35,6 +35,7 @@ public: private: DisplayState displayState_ { DisplayState::UNKNOWN }; + bool isKeyguardDrawn_ { false }; }; } } diff --git a/dmserver/src/display_power_controller.cpp b/dmserver/src/display_power_controller.cpp index d5c7f9e0..a1df4062 100644 --- a/dmserver/src/display_power_controller.cpp +++ b/dmserver/src/display_power_controller.cpp @@ -40,8 +40,10 @@ bool DisplayPowerController::SetDisplayState(DisplayState state) } switch (state) { case DisplayState::ON: { - // TODO: open vsync and SendSystemEvent to keyguard displayState_ = state; + if (!isKeyguardDrawn_) { + DisplayManagerService::GetInstance().NotifyDisplayStateChange(DisplayStateChangeType::BEFORE_UNLOCK); + } DisplayManagerAgentController::GetInstance().NotifyDisplayPowerEvent(DisplayPowerEvent::DISPLAY_ON, EventStatus::BEGIN); break; @@ -73,9 +75,12 @@ void DisplayPowerController::NotifyDisplayEvent(DisplayEvent event) DisplayManagerService::GetInstance().NotifyDisplayStateChange(DisplayStateChangeType::BEFORE_UNLOCK); DisplayManagerAgentController::GetInstance().NotifyDisplayPowerEvent(DisplayPowerEvent::DESKTOP_READY, EventStatus::BEGIN); + isKeyguardDrawn_ = false; return; } - // TODO: set displayState_ ON when keyguard is drawn + if (event == DisplayEvent::KEYGUARD_DRAWN) { + isKeyguardDrawn_ = true; + } } } } \ No newline at end of file diff --git a/wm/src/window_impl.cpp b/wm/src/window_impl.cpp index 5f763e68..795c868b 100644 --- a/wm/src/window_impl.cpp +++ b/wm/src/window_impl.cpp @@ -991,6 +991,11 @@ void WindowImpl::UpdateWindowState(WindowState state) if (uiContent_ != nullptr) { uiContent_->Background(); } + if (abilityContext_ != nullptr) { + WLOGFD("DoAbilityBackground KEYGUARD, id: %{public}d", GetWindowId()); + AAFwk::AbilityManagerClient::GetInstance()->DoAbilityBackground(abilityContext_->GetToken(), + static_cast(WindowStateChangeReason::KEYGUARD)); + } break; } case WindowState::STATE_UNFROZEN: { @@ -998,6 +1003,11 @@ void WindowImpl::UpdateWindowState(WindowState state) if (uiContent_ != nullptr) { uiContent_->Foreground(); } + if (abilityContext_ != nullptr) { + WLOGFD("DoAbilityForeground KEYGUARD, id: %{public}d", GetWindowId()); + AAFwk::AbilityManagerClient::GetInstance()->DoAbilityForeground(abilityContext_->GetToken(), + static_cast(WindowStateChangeReason::KEYGUARD)); + } break; } default: { diff --git a/wmserver/src/window_controller.cpp b/wmserver/src/window_controller.cpp index b16b8367..e8c8f63d 100644 --- a/wmserver/src/window_controller.cpp +++ b/wmserver/src/window_controller.cpp @@ -267,7 +267,7 @@ WMError WindowController::SetAlpha(uint32_t windowId, float alpha) void WindowController::NotifyDisplayStateChange(DisplayStateChangeType type) { - WLOGFI("DisplayStateChangeType:%{public}u", type); + WLOGFD("DisplayStateChangeType:%{public}u", type); WindowState state; WindowStateChangeReason reason; switch (type) { diff --git a/wmserver/src/window_manager_service.cpp b/wmserver/src/window_manager_service.cpp index 0156cade..ac682cd4 100644 --- a/wmserver/src/window_manager_service.cpp +++ b/wmserver/src/window_manager_service.cpp @@ -296,7 +296,6 @@ void WindowManagerService::OnWindowEvent(Event event, uint32_t windowId) void WindowManagerService::NotifyDisplayStateChange(DisplayStateChangeType type) { - WLOGFI("NotifyDisplayStateChange"); std::lock_guard lock(mutex_); return windowController_->NotifyDisplayStateChange(type); } diff --git a/wmserver/src/window_node_container.cpp b/wmserver/src/window_node_container.cpp index bfb9470e..e82f74ea 100644 --- a/wmserver/src/window_node_container.cpp +++ b/wmserver/src/window_node_container.cpp @@ -739,7 +739,8 @@ void WindowNodeContainer::MinimizeWindowFromAbility(const sptr& node WLOGFW("Target abilityToken is nullptr, windowId:%{public}u", node->GetWindowId()); return; } - AAFwk::AbilityManagerClient::GetInstance()->MinimizeAbility(node->abilityToken_); + AAFwk::AbilityManagerClient::GetInstance()->DoAbilityBackground(node->abilityToken_, + static_cast(WindowStateChangeReason::NORMAL)); } WMError WindowNodeContainer::MinimizeAppNodeExceptOptions(const std::vector &exceptionalIds, @@ -757,7 +758,7 @@ WMError WindowNodeContainer::MinimizeAppNodeExceptOptions(const std::vectorGetWindowId()); + WLOGFI("minimize window, windowId:%{public}u", appNode->GetWindowId()); MinimizeWindowFromAbility(appNode); } return WMError::WM_OK;