1 /*
2  * Copyright (c) 2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #include "fold_screen_controller/single_display_fold_policy.h"
16 #include <hisysevent.h>
17 #include <hitrace_meter.h>
18 #include <transaction/rs_interfaces.h>
19 #include "session/screen/include/screen_session.h"
20 #include "screen_session_manager.h"
21 
22 #include "window_manager_hilog.h"
23 
24 #ifdef POWER_MANAGER_ENABLE
25 #include <power_mgr_client.h>
26 #endif
27 
28 namespace OHOS::Rosen {
29 namespace {
30 const ScreenId SCREEN_ID_FULL = 0;
31 const ScreenId SCREEN_ID_MAIN = 5;
32 
33 #ifdef TP_FEATURE_ENABLE
34 const int32_t TP_TYPE = 12;
35 const int32_t TP_TYPE_POWER_CTRL = 18;
36 const std::string FULL_TP = "0";
37 const std::string MAIN_TP = "1";
38 const std::string MAIN_TP_OFF = "1,1";
39 const std::string FULL_TP_OFF = "0,1";
40 #endif
41 } // namespace
42 
SingleDisplayFoldPolicy(std::recursive_mutex & displayInfoMutex,std::shared_ptr<TaskScheduler> screenPowerTaskScheduler)43 SingleDisplayFoldPolicy::SingleDisplayFoldPolicy(std::recursive_mutex& displayInfoMutex,
44     std::shared_ptr<TaskScheduler> screenPowerTaskScheduler)
45     : displayInfoMutex_(displayInfoMutex), screenPowerTaskScheduler_(screenPowerTaskScheduler)
46 {
47     TLOGI(WmsLogTag::DMS, "SingleDisplayFoldPolicy created");
48 
49     ScreenId screenIdFull = 0;
50     int32_t foldCreaseRegionPosX = 0;
51     int32_t foldCreaseRegionPosY = 1064;
52     int32_t foldCreaseRegionPosWidth = 2496;
53     int32_t foldCreaseRegionPosHeight = 171;
54 
55     std::vector<DMRect> rect = {
56         {
57             foldCreaseRegionPosX, foldCreaseRegionPosY,
58             foldCreaseRegionPosWidth, foldCreaseRegionPosHeight
59         }
60     };
61     currentFoldCreaseRegion_ = new FoldCreaseRegion(screenIdFull, rect);
62 }
63 
SetdisplayModeChangeStatus(bool status,bool isOnBootAnimation)64 void SingleDisplayFoldPolicy::SetdisplayModeChangeStatus(bool status, bool isOnBootAnimation)
65 {
66     if (status) {
67         pengdingTask_ = isOnBootAnimation ? FOLD_TO_EXPAND_ONBOOTANIMATION_TASK_NUM : FOLD_TO_EXPAND_TASK_NUM;
68         startTimePoint_ = std::chrono::steady_clock::now();
69         displayModeChangeRunning_ = status;
70     } else {
71         pengdingTask_ --;
72         if (pengdingTask_ != 0) {
73             return;
74         }
75         displayModeChangeRunning_ = false;
76         endTimePoint_ = std::chrono::steady_clock::now();
77         if (lastCachedisplayMode_.load() != GetScreenDisplayMode()) {
78             ScreenSessionManager::GetInstance().TriggerDisplayModeUpdate(lastCachedisplayMode_.load());
79         }
80     }
81 }
82 
ChangeScreenDisplayMode(FoldDisplayMode displayMode,DisplayModeChangeReason reason)83 void SingleDisplayFoldPolicy::ChangeScreenDisplayMode(FoldDisplayMode displayMode, DisplayModeChangeReason reason)
84 {
85     SetLastCacheDisplayMode(displayMode);
86     if (GetModeChangeRunningStatus()) {
87         TLOGW(WmsLogTag::DMS, "last process not complete, skip mode: %{public}d", displayMode);
88         return;
89     }
90     TLOGI(WmsLogTag::DMS, "start change displaymode: %{public}d, lastElapsedMs: %{public}" PRId64 "ms",
91         displayMode, getFoldingElapsedMs());
92 
93     sptr<ScreenSession> screenSession = ScreenSessionManager::GetInstance().GetScreenSession(SCREEN_ID_FULL);
94     if (screenSession == nullptr) {
95         TLOGE(WmsLogTag::DMS, "default screenSession is null");
96         return;
97     }
98 
99     HITRACE_METER_FMT(HITRACE_TAG_WINDOW_MANAGER, "ssm:ChangeScreenDisplayMode(displayMode = %" PRIu64")", displayMode);
100     {
101         std::lock_guard<std::recursive_mutex> lock_mode(displayModeMutex_);
102         if (currentDisplayMode_ == displayMode) {
103             TLOGW(WmsLogTag::DMS, "ChangeScreenDisplayMode already in displayMode %{public}d", displayMode);
104             return;
105         }
106     }
107     SetdisplayModeChangeStatus(true);
108     ReportFoldDisplayModeChange(displayMode);
109     switch (displayMode) {
110         case FoldDisplayMode::MAIN: {
111             ChangeScreenDisplayModeToMain(screenSession, reason);
112             break;
113         }
114         case FoldDisplayMode::FULL: {
115             ChangeScreenDisplayModeToFull(screenSession, reason);
116             break;
117         }
118         case FoldDisplayMode::UNKNOWN: {
119             TLOGI(WmsLogTag::DMS, "ChangeScreenDisplayMode displayMode is unknown");
120             break;
121         }
122         default: {
123             TLOGI(WmsLogTag::DMS, "ChangeScreenDisplayMode displayMode is invalid");
124             break;
125         }
126     }
127     {
128         std::lock_guard<std::recursive_mutex> lock_mode(displayModeMutex_);
129         currentDisplayMode_ = displayMode;
130         lastDisplayMode_ = displayMode;
131     }
132     ScreenSessionManager::GetInstance().NotifyDisplayModeChanged(displayMode);
133 }
134 
SendSensorResult(FoldStatus foldStatus)135 void SingleDisplayFoldPolicy::SendSensorResult(FoldStatus foldStatus)
136 {
137     TLOGI(WmsLogTag::DMS, "SendSensorResult FoldStatus: %{public}d", foldStatus);
138     FoldDisplayMode displayMode = GetModeMatchStatus();
139     ChangeScreenDisplayMode(displayMode);
140 }
141 
GetCurrentFoldCreaseRegion()142 sptr<FoldCreaseRegion> SingleDisplayFoldPolicy::GetCurrentFoldCreaseRegion()
143 {
144     TLOGI(WmsLogTag::DMS, "GetCurrentFoldCreaseRegion");
145     return currentFoldCreaseRegion_;
146 }
147 
LockDisplayStatus(bool locked)148 void SingleDisplayFoldPolicy::LockDisplayStatus(bool locked)
149 {
150     TLOGI(WmsLogTag::DMS, "LockDisplayStatus locked: %{public}d", locked);
151     lockDisplayStatus_ = locked;
152 }
153 
SetOnBootAnimation(bool onBootAnimation)154 void SingleDisplayFoldPolicy::SetOnBootAnimation(bool onBootAnimation)
155 {
156     TLOGI(WmsLogTag::DMS, "SetOnBootAnimation onBootAnimation: %{public}d", onBootAnimation);
157     onBootAnimation_ = onBootAnimation;
158     if (!onBootAnimation_) {
159         TLOGI(WmsLogTag::DMS, "SetOnBootAnimation when boot animation finished, change display mode");
160         RecoverWhenBootAnimationExit();
161     }
162 }
163 
RecoverWhenBootAnimationExit()164 void SingleDisplayFoldPolicy::RecoverWhenBootAnimationExit()
165 {
166     TLOGI(WmsLogTag::DMS, "CurrentScreen(%{public}" PRIu64 ")", screenId_);
167     FoldDisplayMode displayMode = GetModeMatchStatus();
168     if (currentDisplayMode_ != displayMode) {
169         ChangeScreenDisplayMode(displayMode);
170     }
171 }
172 
UpdateForPhyScreenPropertyChange()173 void SingleDisplayFoldPolicy::UpdateForPhyScreenPropertyChange()
174 {
175     TLOGI(WmsLogTag::DMS, "CurrentScreen(%{public}" PRIu64 ")", screenId_);
176     FoldDisplayMode displayMode = GetModeMatchStatus();
177     if (currentDisplayMode_ != displayMode) {
178         ChangeScreenDisplayMode(displayMode);
179     }
180 }
181 
GetModeMatchStatus()182 FoldDisplayMode SingleDisplayFoldPolicy::GetModeMatchStatus()
183 {
184     FoldDisplayMode displayMode = FoldDisplayMode::UNKNOWN;
185     switch (currentFoldStatus_) {
186         case FoldStatus::EXPAND: {
187             displayMode = FoldDisplayMode::FULL;
188             break;
189         }
190         case FoldStatus::FOLDED: {
191             displayMode = FoldDisplayMode::MAIN;
192             break;
193         }
194         case FoldStatus::HALF_FOLD: {
195             displayMode = FoldDisplayMode::FULL;
196             break;
197         }
198         default: {
199             TLOGI(WmsLogTag::DMS, "GetModeMatchStatus FoldStatus is invalid");
200         }
201     }
202     return displayMode;
203 }
204 
ReportFoldDisplayModeChange(FoldDisplayMode displayMode)205 void SingleDisplayFoldPolicy::ReportFoldDisplayModeChange(FoldDisplayMode displayMode)
206 {
207     int32_t mode = static_cast<int32_t>(displayMode);
208     TLOGI(WmsLogTag::DMS, "ReportFoldDisplayModeChange displayMode: %{public}d", mode);
209     int32_t ret = HiSysEventWrite(
210         OHOS::HiviewDFX::HiSysEvent::Domain::WINDOW_MANAGER,
211         "DISPLAY_MODE",
212         OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
213         "FOLD_DISPLAY_MODE", mode);
214     if (ret != 0) {
215         TLOGE(WmsLogTag::DMS, "ReportFoldDisplayModeChange Write HiSysEvent error, ret: %{public}d", ret);
216     }
217 }
218 
ReportFoldStatusChangeBegin(int32_t offScreen,int32_t onScreen)219 void SingleDisplayFoldPolicy::ReportFoldStatusChangeBegin(int32_t offScreen, int32_t onScreen)
220 {
221     TLOGI(WmsLogTag::DMS, "ReportFoldStatusChangeBegin offScreen: %{public}d, onScreen: %{public}d",
222         offScreen, onScreen);
223     int32_t ret = HiSysEventWrite(
224         OHOS::HiviewDFX::HiSysEvent::Domain::WINDOW_MANAGER,
225         "FOLD_STATE_CHANGE_BEGIN",
226         OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
227         "POWER_OFF_SCREEN", offScreen,
228         "POWER_ON_SCREEN", onScreen);
229     if (ret != 0) {
230         TLOGE(WmsLogTag::DMS, "ReportFoldStatusChangeBegin Write HiSysEvent error, ret: %{public}d", ret);
231     }
232 }
233 
ChangeScreenDisplayModeToMainWhenFoldScreenOn(sptr<ScreenSession> screenSession)234 void SingleDisplayFoldPolicy::ChangeScreenDisplayModeToMainWhenFoldScreenOn(sptr<ScreenSession> screenSession)
235 {
236     TLOGI(WmsLogTag::DMS, "IsFoldScreenOn is true, begin.");
237     ReportFoldStatusChangeBegin((int32_t)(SCREEN_ID_FULL), (int32_t)(SCREEN_ID_MAIN));
238     auto taskScreenOnMain = [=] {
239         // off full screen
240         TLOGNI(WmsLogTag::DMS, "ChangeScreenDisplayModeToMain: IsFoldScreenOn is true, screenIdFull OFF.");
241         screenId_ = SCREEN_ID_FULL;
242         ChangeScreenDisplayModePower(SCREEN_ID_FULL, ScreenPowerStatus::POWER_STATUS_OFF);
243         SetdisplayModeChangeStatus(false);
244 
245         // on main screen
246         TLOGNI(WmsLogTag::DMS, "ChangeScreenDisplayModeToMain: IsFoldScreenOn is true, screenIdMain ON.");
247         screenId_ = SCREEN_ID_MAIN;
248         ChangeScreenDisplayModePower(SCREEN_ID_MAIN, ScreenPowerStatus::POWER_STATUS_ON);
249         SetdisplayModeChangeStatus(false);
250     };
251     screenPowerTaskScheduler_->PostAsyncTask(taskScreenOnMain, "screenOnMainTask");
252     SendPropertyChangeResult(screenSession, SCREEN_ID_MAIN, ScreenPropertyChangeReason::FOLD_SCREEN_FOLDING);
253 }
254 
ChangeScreenDisplayModeToMainWhenFoldScreenOff(sptr<ScreenSession> screenSession)255 void SingleDisplayFoldPolicy::ChangeScreenDisplayModeToMainWhenFoldScreenOff(sptr<ScreenSession> screenSession)
256 {
257     TLOGI(WmsLogTag::DMS, "IsFoldScreenOn is false, begin.");
258     // off full screen
259     auto taskScreenOffMainOff = [=] {
260         TLOGNI(WmsLogTag::DMS, "ChangeScreenDisplayModeToMain: IsFoldScreenOn is false, screenIdFull OFF.");
261         screenId_ = SCREEN_ID_FULL;
262         ChangeScreenDisplayModePower(SCREEN_ID_FULL, ScreenPowerStatus::POWER_STATUS_OFF);
263         SetdisplayModeChangeStatus(false);
264     };
265     screenPowerTaskScheduler_->PostAsyncTask(taskScreenOffMainOff, "screenOffMainOffTask");
266     SendPropertyChangeResult(screenSession, SCREEN_ID_MAIN, ScreenPropertyChangeReason::FOLD_SCREEN_FOLDING);
267     auto taskScreenOnMainChangeScreenId = [=] {
268         TLOGNI(WmsLogTag::DMS, "ChangeScreenDisplayModeToMain: IsFoldScreenOn is false, Change ScreenId to Main.");
269         screenId_ = SCREEN_ID_MAIN;
270 #ifdef TP_FEATURE_ENABLE
271         RSInterfaces::GetInstance().SetTpFeatureConfig(TP_TYPE_POWER_CTRL, MAIN_TP_OFF.c_str());
272 #endif
273         SetdisplayModeChangeStatus(false);
274     };
275     screenPowerTaskScheduler_->PostAsyncTask(taskScreenOnMainChangeScreenId, "taskScreenOnMainChangeScreenId");
276 }
277 
ChangeScreenDisplayModeToMain(sptr<ScreenSession> screenSession,DisplayModeChangeReason reason)278 void SingleDisplayFoldPolicy::ChangeScreenDisplayModeToMain(sptr<ScreenSession> screenSession,
279     DisplayModeChangeReason reason)
280 {
281     if (onBootAnimation_) {
282         SetdisplayModeChangeStatus(true, true);
283         ChangeScreenDisplayModeToMainOnBootAnimation(screenSession);
284         return;
285     }
286     #ifdef TP_FEATURE_ENABLE
287     RSInterfaces::GetInstance().SetTpFeatureConfig(TP_TYPE, MAIN_TP.c_str());
288     #endif
289     if (PowerMgr::PowerMgrClient::GetInstance().IsFoldScreenOn()) {
290         TLOGI(WmsLogTag::DMS, "IsFoldScreenOn is true, begin.");
291         ChangeScreenDisplayModeToMainWhenFoldScreenOn(screenSession);
292     } else { // When the screen is off and folded, it is not powered on
293         ScreenSessionManager::GetInstance().ForceSkipScreenOffAnimation();
294         ChangeScreenDisplayModeToMainWhenFoldScreenOff(screenSession);
295     }
296 }
297 
ChangeScreenDisplayModeToFullWhenFoldScreenOn(sptr<ScreenSession> screenSession)298 void SingleDisplayFoldPolicy::ChangeScreenDisplayModeToFullWhenFoldScreenOn(sptr<ScreenSession> screenSession)
299 {
300     TLOGI(WmsLogTag::DMS, "IsFoldScreenOn is true, begin.");
301     auto taskScreenOnFull = [=] {
302         // off main screen
303         TLOGNI(WmsLogTag::DMS, "ChangeScreenDisplayModeToFull: IsFoldScreenOn is true, screenIdMain OFF.");
304         screenId_ = SCREEN_ID_MAIN;
305         ChangeScreenDisplayModePower(SCREEN_ID_MAIN, ScreenPowerStatus::POWER_STATUS_OFF);
306         SetdisplayModeChangeStatus(false);
307 
308         // on full screen
309         TLOGNI(WmsLogTag::DMS, "ChangeScreenDisplayModeToFull: IsFoldScreenOn is true, screenIdFull ON.");
310         screenId_ = SCREEN_ID_FULL;
311         ChangeScreenDisplayModePower(SCREEN_ID_FULL, ScreenPowerStatus::POWER_STATUS_ON);
312         SetdisplayModeChangeStatus(false);
313     };
314     screenPowerTaskScheduler_->PostAsyncTask(taskScreenOnFull, "screenOnFullTask");
315     SendPropertyChangeResult(screenSession, SCREEN_ID_FULL, ScreenPropertyChangeReason::FOLD_SCREEN_EXPAND);
316 }
317 
ChangeScreenDisplayModeToFullWhenFoldScreenOff(sptr<ScreenSession> screenSession,DisplayModeChangeReason reason)318 void SingleDisplayFoldPolicy::ChangeScreenDisplayModeToFullWhenFoldScreenOff(sptr<ScreenSession> screenSession,
319     DisplayModeChangeReason reason)
320 {
321     TLOGI(WmsLogTag::DMS, "IsFoldScreenOn is false, begin.");
322     // off main screen
323     auto taskScreenOffFullOff = [=] {
324         TLOGNI(WmsLogTag::DMS, "ChangeScreenDisplayModeToFull: IsFoldScreenOn is false, screenIdMain OFF.");
325         screenId_ = SCREEN_ID_MAIN;
326         ChangeScreenDisplayModePower(SCREEN_ID_MAIN, ScreenPowerStatus::POWER_STATUS_OFF);
327         SetdisplayModeChangeStatus(false);
328     };
329     screenPowerTaskScheduler_->PostAsyncTask(taskScreenOffFullOff, "screenOffFullOffTask");
330     SendPropertyChangeResult(screenSession, SCREEN_ID_FULL, ScreenPropertyChangeReason::FOLD_SCREEN_EXPAND);
331     // on full screen
332     auto taskScreenOnFullOn = [=] {
333         TLOGNI(WmsLogTag::DMS, "ChangeScreenDisplayModeToFull: IsFoldScreenOn is false, screenIdFull ON.");
334         screenId_ = SCREEN_ID_FULL;
335         if (reason == DisplayModeChangeReason::RECOVER) {
336 #ifdef TP_FEATURE_ENABLE
337             RSInterfaces::GetInstance().SetTpFeatureConfig(TP_TYPE_POWER_CTRL, FULL_TP_OFF.c_str());
338 #endif
339         } else {
340             PowerMgr::PowerMgrClient::GetInstance().WakeupDeviceAsync();
341         }
342         SetdisplayModeChangeStatus(false);
343     };
344     screenPowerTaskScheduler_->PostAsyncTask(taskScreenOnFullOn, "screenOnFullOnTask");
345 }
346 
ChangeScreenDisplayModeToFull(sptr<ScreenSession> screenSession,DisplayModeChangeReason reason)347 void SingleDisplayFoldPolicy::ChangeScreenDisplayModeToFull(sptr<ScreenSession> screenSession,
348     DisplayModeChangeReason reason)
349 {
350     if (onBootAnimation_) {
351         SetdisplayModeChangeStatus(true, true);
352         ChangeScreenDisplayModeToFullOnBootAnimation(screenSession);
353         return;
354     }
355     ReportFoldStatusChangeBegin((int32_t)SCREEN_ID_MAIN, (int32_t)SCREEN_ID_FULL);
356     #ifdef TP_FEATURE_ENABLE
357     RSInterfaces::GetInstance().SetTpFeatureConfig(TP_TYPE, FULL_TP.c_str());
358     #endif
359     if (PowerMgr::PowerMgrClient::GetInstance().IsFoldScreenOn()) {
360         ChangeScreenDisplayModeToFullWhenFoldScreenOn(screenSession);
361     } else { //AOD scene
362         if (ScreenSessionManager::GetInstance().TryToCancelScreenOff()) {
363             ChangeScreenDisplayModeToFullWhenFoldScreenOn(screenSession);
364         } else {
365             ChangeScreenDisplayModeToFullWhenFoldScreenOff(screenSession, reason);
366         }
367     }
368 }
369 
ChangeScreenDisplayModePower(ScreenId screenId,ScreenPowerStatus screenPowerStatus)370 void SingleDisplayFoldPolicy::ChangeScreenDisplayModePower(ScreenId screenId, ScreenPowerStatus screenPowerStatus)
371 {
372     ScreenSessionManager::GetInstance().SetKeyguardDrawnDoneFlag(false);
373     ScreenSessionManager::GetInstance().SetScreenPowerForFold(screenId, screenPowerStatus);
374 }
375 
SendPropertyChangeResult(sptr<ScreenSession> screenSession,ScreenId screenId,ScreenPropertyChangeReason reason)376 void SingleDisplayFoldPolicy::SendPropertyChangeResult(sptr<ScreenSession> screenSession, ScreenId screenId,
377     ScreenPropertyChangeReason reason)
378 {
379     std::lock_guard<std::recursive_mutex> lock_info(displayInfoMutex_);
380     screenProperty_ = ScreenSessionManager::GetInstance().GetPhyScreenProperty(screenId);
381     screenSession->UpdatePropertyByFoldControl(screenProperty_);
382     screenSession->PropertyChange(screenSession->GetScreenProperty(), reason);
383     screenSession->SetRotationAndScreenRotationOnly(Rotation::ROTATION_0);
384     TLOGI(WmsLogTag::DMS, "screenBounds : width_= %{public}f, height_= %{public}f",
385         screenSession->GetScreenProperty().GetBounds().rect_.width_,
386         screenSession->GetScreenProperty().GetBounds().rect_.height_);
387     ScreenSessionManager::GetInstance().NotifyDisplayChanged(screenSession->ConvertToDisplayInfo(),
388         DisplayChangeEvent::DISPLAY_SIZE_CHANGED);
389 }
390 
ChangeScreenDisplayModeToMainOnBootAnimation(sptr<ScreenSession> screenSession)391 void SingleDisplayFoldPolicy::ChangeScreenDisplayModeToMainOnBootAnimation(sptr<ScreenSession> screenSession)
392 {
393     TLOGI(WmsLogTag::DMS, "ChangeScreenDisplayModeToMainOnBootAnimation");
394     screenProperty_ = ScreenSessionManager::GetInstance().GetPhyScreenProperty(SCREEN_ID_MAIN);
395     screenSession->UpdatePropertyByFoldControl(screenProperty_);
396     screenSession->PropertyChange(screenSession->GetScreenProperty(),
397         ScreenPropertyChangeReason::FOLD_SCREEN_FOLDING);
398     TLOGI(WmsLogTag::DMS, "screenBounds : width_= %{public}f, height_= %{public}f",
399         screenSession->GetScreenProperty().GetBounds().rect_.width_,
400         screenSession->GetScreenProperty().GetBounds().rect_.height_);
401     screenId_ = SCREEN_ID_MAIN;
402 }
403 
ChangeScreenDisplayModeToFullOnBootAnimation(sptr<ScreenSession> screenSession)404 void SingleDisplayFoldPolicy::ChangeScreenDisplayModeToFullOnBootAnimation(sptr<ScreenSession> screenSession)
405 {
406     TLOGI(WmsLogTag::DMS, "ChangeScreenDisplayModeToFullOnBootAnimation");
407     screenProperty_ = ScreenSessionManager::GetInstance().GetPhyScreenProperty(SCREEN_ID_FULL);
408     screenSession->UpdatePropertyByFoldControl(screenProperty_);
409     screenSession->PropertyChange(screenSession->GetScreenProperty(),
410         ScreenPropertyChangeReason::FOLD_SCREEN_EXPAND);
411     TLOGI(WmsLogTag::DMS, "screenBounds : width_= %{public}f, height_= %{public}f",
412         screenSession->GetScreenProperty().GetBounds().rect_.width_,
413         screenSession->GetScreenProperty().GetBounds().rect_.height_);
414     screenId_ = SCREEN_ID_FULL;
415 }
416 } // namespace OHOS::Rosen