• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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     HITRACE_METER_FMT(HITRACE_TAG_WINDOW_MANAGER, "ssm:ChangeScreenDisplayMode(displayMode = %" PRIu64")", displayMode);
94     {
95         std::lock_guard<std::recursive_mutex> lock_mode(displayModeMutex_);
96         if (currentDisplayMode_ == displayMode) {
97             TLOGW(WmsLogTag::DMS, "ChangeScreenDisplayMode already in displayMode %{public}d", displayMode);
98             return;
99         }
100     }
101     ChangeScreenDisplayModeInner(displayMode, reason);
102     ScreenSessionManager::GetInstance().NotifyDisplayModeChanged(displayMode);
103 }
104 
ChangeScreenDisplayModeInner(FoldDisplayMode displayMode,DisplayModeChangeReason reason)105 void SingleDisplayFoldPolicy::ChangeScreenDisplayModeInner(FoldDisplayMode displayMode, DisplayModeChangeReason reason)
106 {
107     sptr<ScreenSession> screenSession = ScreenSessionManager::GetInstance().GetScreenSession(SCREEN_ID_FULL);
108     if (screenSession == nullptr) {
109         TLOGE(WmsLogTag::DMS, "default screenSession is null");
110         return;
111     }
112     SetdisplayModeChangeStatus(true);
113     {
114         std::lock_guard<std::recursive_mutex> lock_mode(displayModeMutex_);
115         lastDisplayMode_ = displayMode;
116     }
117     ReportFoldDisplayModeChange(displayMode);
118     switch (displayMode) {
119         case FoldDisplayMode::MAIN: {
120             ChangeScreenDisplayModeToMain(screenSession, reason);
121             break;
122         }
123         case FoldDisplayMode::FULL: {
124             ChangeScreenDisplayModeToFull(screenSession, reason);
125             break;
126         }
127         case FoldDisplayMode::UNKNOWN: {
128             TLOGI(WmsLogTag::DMS, "ChangeScreenDisplayMode displayMode is unknown");
129             break;
130         }
131         default: {
132             TLOGI(WmsLogTag::DMS, "ChangeScreenDisplayMode displayMode is invalid");
133             break;
134         }
135     }
136     {
137         std::lock_guard<std::recursive_mutex> lock_mode(displayModeMutex_);
138         currentDisplayMode_ = displayMode;
139     }
140 }
141 
SendSensorResult(FoldStatus foldStatus)142 void SingleDisplayFoldPolicy::SendSensorResult(FoldStatus foldStatus)
143 {
144     TLOGI(WmsLogTag::DMS, "SendSensorResult FoldStatus: %{public}d", foldStatus);
145     FoldDisplayMode displayMode = GetModeMatchStatus();
146     ChangeScreenDisplayMode(displayMode);
147 }
148 
GetCurrentFoldCreaseRegion()149 sptr<FoldCreaseRegion> SingleDisplayFoldPolicy::GetCurrentFoldCreaseRegion()
150 {
151     TLOGI(WmsLogTag::DMS, "GetCurrentFoldCreaseRegion");
152     return currentFoldCreaseRegion_;
153 }
154 
LockDisplayStatus(bool locked)155 void SingleDisplayFoldPolicy::LockDisplayStatus(bool locked)
156 {
157     TLOGI(WmsLogTag::DMS, "LockDisplayStatus locked: %{public}d", locked);
158     lockDisplayStatus_ = locked;
159 }
160 
SetOnBootAnimation(bool onBootAnimation)161 void SingleDisplayFoldPolicy::SetOnBootAnimation(bool onBootAnimation)
162 {
163     TLOGI(WmsLogTag::DMS, "SetOnBootAnimation onBootAnimation: %{public}d", onBootAnimation);
164     onBootAnimation_ = onBootAnimation;
165     if (!onBootAnimation_) {
166         TLOGI(WmsLogTag::DMS, "SetOnBootAnimation when boot animation finished, change display mode");
167         RecoverWhenBootAnimationExit();
168     }
169 }
170 
RecoverWhenBootAnimationExit()171 void SingleDisplayFoldPolicy::RecoverWhenBootAnimationExit()
172 {
173     TLOGI(WmsLogTag::DMS, "CurrentScreen(%{public}" PRIu64 ")", screenId_);
174     FoldDisplayMode displayMode = GetModeMatchStatus();
175     if (currentDisplayMode_ != displayMode) {
176         ChangeScreenDisplayMode(displayMode);
177     }
178 }
179 
UpdateForPhyScreenPropertyChange()180 void SingleDisplayFoldPolicy::UpdateForPhyScreenPropertyChange()
181 {
182     TLOGI(WmsLogTag::DMS, "CurrentScreen(%{public}" PRIu64 ")", screenId_);
183     FoldDisplayMode displayMode = GetModeMatchStatus();
184     if (currentDisplayMode_ != displayMode) {
185         ChangeScreenDisplayMode(displayMode);
186     }
187 }
188 
GetModeMatchStatus()189 FoldDisplayMode SingleDisplayFoldPolicy::GetModeMatchStatus()
190 {
191     FoldDisplayMode displayMode = FoldDisplayMode::UNKNOWN;
192     switch (currentFoldStatus_) {
193         case FoldStatus::EXPAND: {
194             displayMode = FoldDisplayMode::FULL;
195             break;
196         }
197         case FoldStatus::FOLDED: {
198             displayMode = FoldDisplayMode::MAIN;
199             break;
200         }
201         case FoldStatus::HALF_FOLD: {
202             displayMode = FoldDisplayMode::FULL;
203             break;
204         }
205         default: {
206             TLOGI(WmsLogTag::DMS, "GetModeMatchStatus FoldStatus is invalid");
207         }
208     }
209     return displayMode;
210 }
211 
ReportFoldDisplayModeChange(FoldDisplayMode displayMode)212 void SingleDisplayFoldPolicy::ReportFoldDisplayModeChange(FoldDisplayMode displayMode)
213 {
214     int32_t mode = static_cast<int32_t>(displayMode);
215     TLOGI(WmsLogTag::DMS, "ReportFoldDisplayModeChange displayMode: %{public}d", mode);
216     int32_t ret = HiSysEventWrite(
217         OHOS::HiviewDFX::HiSysEvent::Domain::WINDOW_MANAGER,
218         "DISPLAY_MODE",
219         OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
220         "FOLD_DISPLAY_MODE", mode);
221     if (ret != 0) {
222         TLOGE(WmsLogTag::DMS, "ReportFoldDisplayModeChange Write HiSysEvent error, ret: %{public}d", ret);
223     }
224 }
225 
ReportFoldStatusChangeBegin(int32_t offScreen,int32_t onScreen)226 void SingleDisplayFoldPolicy::ReportFoldStatusChangeBegin(int32_t offScreen, int32_t onScreen)
227 {
228     TLOGI(WmsLogTag::DMS, "ReportFoldStatusChangeBegin offScreen: %{public}d, onScreen: %{public}d",
229         offScreen, onScreen);
230     int32_t ret = HiSysEventWrite(
231         OHOS::HiviewDFX::HiSysEvent::Domain::WINDOW_MANAGER,
232         "FOLD_STATE_CHANGE_BEGIN",
233         OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
234         "POWER_OFF_SCREEN", offScreen,
235         "POWER_ON_SCREEN", onScreen);
236     if (ret != 0) {
237         TLOGE(WmsLogTag::DMS, "ReportFoldStatusChangeBegin Write HiSysEvent error, ret: %{public}d", ret);
238     }
239 }
240 
ChangeScreenDisplayModeToMainWhenFoldScreenOn(sptr<ScreenSession> screenSession)241 void SingleDisplayFoldPolicy::ChangeScreenDisplayModeToMainWhenFoldScreenOn(sptr<ScreenSession> screenSession)
242 {
243     TLOGI(WmsLogTag::DMS, "IsFoldScreenOn is true, begin.");
244     ReportFoldStatusChangeBegin((int32_t)(SCREEN_ID_FULL), (int32_t)(SCREEN_ID_MAIN));
245     auto taskScreenOnMain = [=] {
246         // off full screen
247         TLOGNI(WmsLogTag::DMS, "ChangeScreenDisplayModeToMain: IsFoldScreenOn is true, screenIdFull OFF.");
248         screenId_ = SCREEN_ID_FULL;
249         ChangeScreenDisplayModePower(SCREEN_ID_FULL, ScreenPowerStatus::POWER_STATUS_OFF);
250         SetdisplayModeChangeStatus(false);
251 
252         // on main screen
253         TLOGNI(WmsLogTag::DMS, "ChangeScreenDisplayModeToMain: IsFoldScreenOn is true, screenIdMain ON.");
254         screenId_ = SCREEN_ID_MAIN;
255         ChangeScreenDisplayModePower(SCREEN_ID_MAIN, ScreenPowerStatus::POWER_STATUS_ON);
256         SetdisplayModeChangeStatus(false);
257     };
258     screenPowerTaskScheduler_->PostAsyncTask(taskScreenOnMain, "screenOnMainTask");
259     SendPropertyChangeResult(screenSession, SCREEN_ID_MAIN, ScreenPropertyChangeReason::FOLD_SCREEN_FOLDING);
260 }
261 
ChangeScreenDisplayModeToMainWhenFoldScreenOff(sptr<ScreenSession> screenSession)262 void SingleDisplayFoldPolicy::ChangeScreenDisplayModeToMainWhenFoldScreenOff(sptr<ScreenSession> screenSession)
263 {
264     TLOGI(WmsLogTag::DMS, "IsFoldScreenOn is false, begin.");
265     // off full screen
266     auto taskScreenOffMainOff = [=] {
267         TLOGNI(WmsLogTag::DMS, "ChangeScreenDisplayModeToMain: IsFoldScreenOn is false, screenIdFull OFF.");
268         screenId_ = SCREEN_ID_FULL;
269         ChangeScreenDisplayModePower(SCREEN_ID_FULL, ScreenPowerStatus::POWER_STATUS_OFF);
270         SetdisplayModeChangeStatus(false);
271     };
272     screenPowerTaskScheduler_->PostAsyncTask(taskScreenOffMainOff, "screenOffMainOffTask");
273     SendPropertyChangeResult(screenSession, SCREEN_ID_MAIN, ScreenPropertyChangeReason::FOLD_SCREEN_FOLDING);
274     auto taskScreenOnMainChangeScreenId = [=] {
275         TLOGNI(WmsLogTag::DMS, "ChangeScreenDisplayModeToMain: IsFoldScreenOn is false, Change ScreenId to Main.");
276         screenId_ = SCREEN_ID_MAIN;
277 #ifdef TP_FEATURE_ENABLE
278         RSInterfaces::GetInstance().SetTpFeatureConfig(TP_TYPE_POWER_CTRL, MAIN_TP_OFF.c_str());
279 #endif
280         SetdisplayModeChangeStatus(false);
281     };
282     screenPowerTaskScheduler_->PostAsyncTask(taskScreenOnMainChangeScreenId, "taskScreenOnMainChangeScreenId");
283 }
284 
ChangeScreenDisplayModeToMain(sptr<ScreenSession> screenSession,DisplayModeChangeReason reason)285 void SingleDisplayFoldPolicy::ChangeScreenDisplayModeToMain(sptr<ScreenSession> screenSession,
286     DisplayModeChangeReason reason)
287 {
288     if (onBootAnimation_) {
289         SetdisplayModeChangeStatus(true, true);
290         ChangeScreenDisplayModeToMainOnBootAnimation(screenSession);
291         return;
292     }
293     #ifdef TP_FEATURE_ENABLE
294     RSInterfaces::GetInstance().SetTpFeatureConfig(TP_TYPE, MAIN_TP.c_str());
295     #endif
296     if (PowerMgr::PowerMgrClient::GetInstance().IsFoldScreenOn()) {
297         TLOGI(WmsLogTag::DMS, "IsFoldScreenOn is true, begin.");
298         ChangeScreenDisplayModeToMainWhenFoldScreenOn(screenSession);
299     } else { // When the screen is off and folded, it is not powered on
300         ScreenSessionManager::GetInstance().ForceSkipScreenOffAnimation();
301         ChangeScreenDisplayModeToMainWhenFoldScreenOff(screenSession);
302     }
303 }
304 
ChangeScreenDisplayModeToFullWhenFoldScreenOn(sptr<ScreenSession> screenSession)305 void SingleDisplayFoldPolicy::ChangeScreenDisplayModeToFullWhenFoldScreenOn(sptr<ScreenSession> screenSession)
306 {
307     TLOGI(WmsLogTag::DMS, "IsFoldScreenOn is true, begin.");
308     auto taskScreenOnFull = [=] {
309         // off main screen
310         TLOGNI(WmsLogTag::DMS, "ChangeScreenDisplayModeToFull: IsFoldScreenOn is true, screenIdMain OFF.");
311         screenId_ = SCREEN_ID_MAIN;
312         ChangeScreenDisplayModePower(SCREEN_ID_MAIN, ScreenPowerStatus::POWER_STATUS_OFF);
313         SetdisplayModeChangeStatus(false);
314 
315         // on full screen
316         TLOGNI(WmsLogTag::DMS, "ChangeScreenDisplayModeToFull: IsFoldScreenOn is true, screenIdFull ON.");
317         screenId_ = SCREEN_ID_FULL;
318         ChangeScreenDisplayModePower(SCREEN_ID_FULL, ScreenPowerStatus::POWER_STATUS_ON);
319         SetdisplayModeChangeStatus(false);
320     };
321     screenPowerTaskScheduler_->PostAsyncTask(taskScreenOnFull, "screenOnFullTask");
322     SendPropertyChangeResult(screenSession, SCREEN_ID_FULL, ScreenPropertyChangeReason::FOLD_SCREEN_EXPAND);
323 }
324 
ChangeScreenDisplayModeToFullWhenFoldScreenOff(sptr<ScreenSession> screenSession,DisplayModeChangeReason reason)325 void SingleDisplayFoldPolicy::ChangeScreenDisplayModeToFullWhenFoldScreenOff(sptr<ScreenSession> screenSession,
326     DisplayModeChangeReason reason)
327 {
328     TLOGI(WmsLogTag::DMS, "IsFoldScreenOn is false, begin.");
329     // off main screen
330     auto taskScreenOffFullOff = [=] {
331         TLOGNI(WmsLogTag::DMS, "ChangeScreenDisplayModeToFull: IsFoldScreenOn is false, screenIdMain OFF.");
332         screenId_ = SCREEN_ID_MAIN;
333         ChangeScreenDisplayModePower(SCREEN_ID_MAIN, ScreenPowerStatus::POWER_STATUS_OFF);
334         SetdisplayModeChangeStatus(false);
335     };
336     screenPowerTaskScheduler_->PostAsyncTask(taskScreenOffFullOff, "screenOffFullOffTask");
337     SendPropertyChangeResult(screenSession, SCREEN_ID_FULL, ScreenPropertyChangeReason::FOLD_SCREEN_EXPAND);
338     // on full screen
339     auto taskScreenOnFullOn = [=] {
340         TLOGNI(WmsLogTag::DMS, "ChangeScreenDisplayModeToFull: IsFoldScreenOn is false, screenIdFull ON.");
341         screenId_ = SCREEN_ID_FULL;
342         if (reason == DisplayModeChangeReason::RECOVER) {
343 #ifdef TP_FEATURE_ENABLE
344             RSInterfaces::GetInstance().SetTpFeatureConfig(TP_TYPE_POWER_CTRL, FULL_TP_OFF.c_str());
345 #endif
346         } else {
347             PowerMgr::PowerMgrClient::GetInstance().WakeupDeviceAsync();
348         }
349         SetdisplayModeChangeStatus(false);
350     };
351     screenPowerTaskScheduler_->PostAsyncTask(taskScreenOnFullOn, "screenOnFullOnTask");
352 }
353 
ChangeScreenDisplayModeToFull(sptr<ScreenSession> screenSession,DisplayModeChangeReason reason)354 void SingleDisplayFoldPolicy::ChangeScreenDisplayModeToFull(sptr<ScreenSession> screenSession,
355     DisplayModeChangeReason reason)
356 {
357     if (onBootAnimation_) {
358         SetdisplayModeChangeStatus(true, true);
359         ChangeScreenDisplayModeToFullOnBootAnimation(screenSession);
360         return;
361     }
362     ReportFoldStatusChangeBegin((int32_t)SCREEN_ID_MAIN, (int32_t)SCREEN_ID_FULL);
363     #ifdef TP_FEATURE_ENABLE
364     RSInterfaces::GetInstance().SetTpFeatureConfig(TP_TYPE, FULL_TP.c_str());
365     #endif
366     if (PowerMgr::PowerMgrClient::GetInstance().IsFoldScreenOn()) {
367         ChangeScreenDisplayModeToFullWhenFoldScreenOn(screenSession);
368     } else { //AOD scene
369         if (ScreenSessionManager::GetInstance().TryToCancelScreenOff()) {
370             ChangeScreenDisplayModeToFullWhenFoldScreenOn(screenSession);
371         } else {
372             ChangeScreenDisplayModeToFullWhenFoldScreenOff(screenSession, reason);
373         }
374     }
375 }
376 
ChangeScreenDisplayModePower(ScreenId screenId,ScreenPowerStatus screenPowerStatus)377 void SingleDisplayFoldPolicy::ChangeScreenDisplayModePower(ScreenId screenId, ScreenPowerStatus screenPowerStatus)
378 {
379     ScreenSessionManager::GetInstance().SetKeyguardDrawnDoneFlag(false);
380     ScreenSessionManager::GetInstance().SetScreenPowerForFold(screenId, screenPowerStatus);
381 }
382 
SendPropertyChangeResult(sptr<ScreenSession> screenSession,ScreenId screenId,ScreenPropertyChangeReason reason)383 void SingleDisplayFoldPolicy::SendPropertyChangeResult(sptr<ScreenSession> screenSession, ScreenId screenId,
384     ScreenPropertyChangeReason reason)
385 {
386     std::lock_guard<std::recursive_mutex> lock_info(displayInfoMutex_);
387     screenProperty_ = ScreenSessionManager::GetInstance().GetPhyScreenProperty(screenId);
388     screenSession->UpdatePropertyByFoldControl(screenProperty_);
389     screenSession->PropertyChange(screenSession->GetScreenProperty(), reason);
390     screenSession->SetRotationAndScreenRotationOnly(Rotation::ROTATION_0);
391     TLOGI(WmsLogTag::DMS, "screenBounds : width_= %{public}f, height_= %{public}f",
392         screenSession->GetScreenProperty().GetBounds().rect_.width_,
393         screenSession->GetScreenProperty().GetBounds().rect_.height_);
394     ScreenSessionManager::GetInstance().NotifyDisplayChanged(screenSession->ConvertToDisplayInfo(),
395         DisplayChangeEvent::DISPLAY_SIZE_CHANGED);
396 }
397 
ChangeScreenDisplayModeToMainOnBootAnimation(sptr<ScreenSession> screenSession)398 void SingleDisplayFoldPolicy::ChangeScreenDisplayModeToMainOnBootAnimation(sptr<ScreenSession> screenSession)
399 {
400     TLOGI(WmsLogTag::DMS, "ChangeScreenDisplayModeToMainOnBootAnimation");
401     screenProperty_ = ScreenSessionManager::GetInstance().GetPhyScreenProperty(SCREEN_ID_MAIN);
402     screenSession->UpdatePropertyByFoldControl(screenProperty_);
403     screenSession->PropertyChange(screenSession->GetScreenProperty(),
404         ScreenPropertyChangeReason::FOLD_SCREEN_FOLDING);
405     TLOGI(WmsLogTag::DMS, "screenBounds : width_= %{public}f, height_= %{public}f",
406         screenSession->GetScreenProperty().GetBounds().rect_.width_,
407         screenSession->GetScreenProperty().GetBounds().rect_.height_);
408     screenId_ = SCREEN_ID_MAIN;
409 }
410 
ChangeScreenDisplayModeToFullOnBootAnimation(sptr<ScreenSession> screenSession)411 void SingleDisplayFoldPolicy::ChangeScreenDisplayModeToFullOnBootAnimation(sptr<ScreenSession> screenSession)
412 {
413     TLOGI(WmsLogTag::DMS, "ChangeScreenDisplayModeToFullOnBootAnimation");
414     screenProperty_ = ScreenSessionManager::GetInstance().GetPhyScreenProperty(SCREEN_ID_FULL);
415     screenSession->UpdatePropertyByFoldControl(screenProperty_);
416     screenSession->PropertyChange(screenSession->GetScreenProperty(),
417         ScreenPropertyChangeReason::FOLD_SCREEN_EXPAND);
418     TLOGI(WmsLogTag::DMS, "screenBounds : width_= %{public}f, height_= %{public}f",
419         screenSession->GetScreenProperty().GetBounds().rect_.width_,
420         screenSession->GetScreenProperty().GetBounds().rect_.height_);
421     screenId_ = SCREEN_ID_FULL;
422 }
423 } // namespace OHOS::Rosen