add startingwindow and remoteanimation to async queue

Signed-off-by: chyyy0213 <chenhaiying3@huawei.com>
Change-Id: I0cf9ace1f8de29439641a8916d506776e16fcc74
Signed-off-by: chyyy0213 <chenhaiying3@huawei.com>
This commit is contained in:
chyyy0213
2022-06-07 16:36:27 +08:00
parent a1b6e4d808
commit f13be2bf82
7 changed files with 33 additions and 15 deletions
+1 -1
View File
@@ -255,7 +255,7 @@ WMError WindowAdapter::NotifyWindowTransition(sptr<WindowTransitionInfo> from, s
{
INIT_PROXY_CHECK_RETURN(WMError::WM_ERROR_SAMGR);
return windowManagerServiceProxy_->NotifyWindowTransition(from, to);
return windowManagerServiceProxy_->NotifyWindowTransition(from, to, true);
}
} // namespace Rosen
} // namespace OHOS
+2 -1
View File
@@ -69,7 +69,8 @@ public:
uint32_t& windowId, sptr<IRemoteObject> token) override;
WMError AddWindow(sptr<WindowProperty>& property) override;
WMError RemoveWindow(uint32_t windowId) override;
WMError NotifyWindowTransition(sptr<WindowTransitionInfo>& from, sptr<WindowTransitionInfo>& to) override;
WMError NotifyWindowTransition(sptr<WindowTransitionInfo>& from, sptr<WindowTransitionInfo>& to,
bool isFromClient = false) override;
WMError DestroyWindow(uint32_t windowId, bool onlySelf = false) override;
WMError RequestFocus(uint32_t windowId) override;
WMError SetWindowBackgroundBlur(uint32_t windowId, WindowBlurLevel level) override;
@@ -84,7 +84,8 @@ public:
virtual WMError GetAccessibilityWindowInfo(sptr<AccessibilityWindowInfo>& windowInfo) = 0;
virtual WMError SetWindowAnimationController(const sptr<RSIWindowAnimationController>& controller) = 0;
virtual WMError GetSystemConfig(SystemConfig& systemConfig) = 0;
virtual WMError NotifyWindowTransition(sptr<WindowTransitionInfo>& from, sptr<WindowTransitionInfo>& to) = 0;
virtual WMError NotifyWindowTransition(sptr<WindowTransitionInfo>& from, sptr<WindowTransitionInfo>& to,
bool isFromClient = false) = 0;
virtual WMError GetModeChangeHotZones(DisplayId displayId, ModeChangeHotZones& hotZones) = 0;
};
}
+2 -1
View File
@@ -32,7 +32,8 @@ public:
uint32_t& windowId, sptr<IRemoteObject> token) override;
WMError AddWindow(sptr<WindowProperty>& property) override;
WMError RemoveWindow(uint32_t windowId) override;
WMError NotifyWindowTransition(sptr<WindowTransitionInfo>& from, sptr<WindowTransitionInfo>& to) override;
WMError NotifyWindowTransition(sptr<WindowTransitionInfo>& from, sptr<WindowTransitionInfo>& to,
bool isFromClient = false) override;
WMError DestroyWindow(uint32_t windowId, bool onlySelf = false) override;
WMError RequestFocus(uint32_t windowId) override;
WMError SetWindowBackgroundBlur(uint32_t windowId, WindowBlurLevel level) override;
+18 -9
View File
@@ -136,7 +136,7 @@ void WindowManagerServiceHandler::NotifyWindowTransition(
{
sptr<WindowTransitionInfo> fromInfo = new WindowTransitionInfo(from);
sptr<WindowTransitionInfo> toInfo = new WindowTransitionInfo(to);
WindowManagerService::GetInstance().NotifyWindowTransition(fromInfo, toInfo);
WindowManagerService::GetInstance().NotifyWindowTransition(fromInfo, toInfo, false);
}
int32_t WindowManagerServiceHandler::GetFocusWindow(sptr<IRemoteObject>& abilityToken)
@@ -259,11 +259,20 @@ void WindowManagerService::OnStop()
}
WMError WindowManagerService::NotifyWindowTransition(
sptr<WindowTransitionInfo>& fromInfo, sptr<WindowTransitionInfo>& toInfo)
sptr<WindowTransitionInfo>& fromInfo, sptr<WindowTransitionInfo>& toInfo, bool isFromClient)
{
return wmsTaskLooper_->ScheduleTask([this, &fromInfo, &toInfo]() {
return windowController_->NotifyWindowTransition(fromInfo, toInfo);
}).get();
if (!isFromClient) {
WLOGFI("NotifyWindowTransition asynchronously.");
wmsTaskLooper_->PostTask([this, fromInfo, toInfo]() mutable {
return windowController_->NotifyWindowTransition(fromInfo, toInfo);
});
return WMError::WM_OK;
} else {
WLOGFI("NotifyWindowTransition synchronously.");
return wmsTaskLooper_->ScheduleTask([this, &fromInfo, &toInfo]() {
return windowController_->NotifyWindowTransition(fromInfo, toInfo);
}).get();
}
}
WMError WindowManagerService::GetFocusWindowInfo(sptr<IRemoteObject>& abilityToken)
@@ -280,9 +289,9 @@ void WindowManagerService::StartingWindow(sptr<WindowTransitionInfo> info, sptr<
WLOGFI("startingWindow not open!");
return;
}
return wmsTaskLooper_->ScheduleTask([this, &info, &pixelMap, isColdStart, bkgColor]() {
return wmsTaskLooper_->PostTask([this, info, pixelMap, isColdStart, bkgColor]() {
return windowController_->StartingWindow(info, pixelMap, bkgColor, isColdStart);
}).wait();
});
}
void WindowManagerService::CancelStartingWindow(sptr<IRemoteObject> abilityToken)
@@ -292,9 +301,9 @@ void WindowManagerService::CancelStartingWindow(sptr<IRemoteObject> abilityToken
WLOGFI("startingWindow not open!");
return;
}
return wmsTaskLooper_->ScheduleTask([this, &abilityToken]() {
return wmsTaskLooper_->PostTask([this, abilityToken]() {
return windowController_->CancelStartingWindow(abilityToken);
}).wait();
});
}
WMError WindowManagerService::CreateWindow(sptr<IWindow>& window, sptr<WindowProperty>& property,
+6 -1
View File
@@ -570,7 +570,8 @@ WMError WindowManagerProxy::GetSystemConfig(SystemConfig& systemConfig)
return static_cast<WMError>(ret);
}
WMError WindowManagerProxy::NotifyWindowTransition(sptr<WindowTransitionInfo>& from, sptr<WindowTransitionInfo>& to)
WMError WindowManagerProxy::NotifyWindowTransition(sptr<WindowTransitionInfo>& from, sptr<WindowTransitionInfo>& to,
bool isFromClient)
{
MessageParcel data;
MessageParcel reply;
@@ -591,6 +592,10 @@ WMError WindowManagerProxy::NotifyWindowTransition(sptr<WindowTransitionInfo>& f
return WMError::WM_ERROR_IPC_FAILED;
}
if (!data.WriteBool(isFromClient)) {
WLOGFE("Failed to write to isFromClient!");
return WMError::WM_ERROR_IPC_FAILED;
}
auto error = Remote()->SendRequest(static_cast<uint32_t>(WindowManagerMessage::TRANS_ID_NOTIFY_WINDOW_TRANSITION),
data, reply, option);
if (error != ERR_NONE) {
+2 -1
View File
@@ -190,7 +190,8 @@ int32_t WindowManagerStub::OnRemoteRequest(uint32_t code, MessageParcel &data, M
case WindowManagerMessage::TRANS_ID_NOTIFY_WINDOW_TRANSITION: {
sptr<WindowTransitionInfo> from = data.ReadParcelable<WindowTransitionInfo>();
sptr<WindowTransitionInfo> to = data.ReadParcelable<WindowTransitionInfo>();
WMError errCode = NotifyWindowTransition(from, to);
bool isFromClient = data.ReadBool();
WMError errCode = NotifyWindowTransition(from, to, isFromClient);
reply.WriteInt32(static_cast<int32_t>(errCode));
break;
}