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