• 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 
16 #include "fold_screen_controller/fold_screen_policy.h"
17 #include "window_manager_hilog.h"
18 
19 namespace OHOS::Rosen {
20 const uint32_t MODE_CHANGE_TIMEOUT_MS = 2000;
21 FoldScreenPolicy::FoldScreenPolicy() = default;
22 FoldScreenPolicy::~FoldScreenPolicy() = default;
23 
ChangeScreenDisplayMode(FoldDisplayMode displayMode,DisplayModeChangeReason reason)24 void FoldScreenPolicy::ChangeScreenDisplayMode(FoldDisplayMode displayMode, DisplayModeChangeReason reason) {}
25 
LockDisplayStatus(bool locked)26 void FoldScreenPolicy::LockDisplayStatus(bool locked)
27 {
28     lockDisplayStatus_ = locked;
29 }
SendSensorResult(FoldStatus foldStatus)30 void FoldScreenPolicy::SendSensorResult(FoldStatus foldStatus) {}
31 
GetCurrentScreenId()32 ScreenId FoldScreenPolicy::GetCurrentScreenId()
33 {
34     return screenId_;
35 }
GetCurrentFoldCreaseRegion()36 sptr<FoldCreaseRegion> FoldScreenPolicy::GetCurrentFoldCreaseRegion()
37 {
38     return currentFoldCreaseRegion_;
39 }
40 
GetLiveCreaseRegion()41 FoldCreaseRegion FoldScreenPolicy::GetLiveCreaseRegion()
42 {
43     std::lock_guard<std::mutex> lock_mode(liveCreaseRegionMutex_);
44     return liveCreaseRegion_;
45 }
46 
SetOnBootAnimation(bool onBootAnimation)47 void FoldScreenPolicy::SetOnBootAnimation(bool onBootAnimation)
48 {
49     onBootAnimation_ = onBootAnimation;
50 }
51 
UpdateForPhyScreenPropertyChange()52 void FoldScreenPolicy::UpdateForPhyScreenPropertyChange() {}
53 
GetScreenDisplayMode()54 FoldDisplayMode FoldScreenPolicy::GetScreenDisplayMode()
55 {
56     std::lock_guard<std::recursive_mutex> lock_mode(displayModeMutex_);
57     return lastDisplayMode_;
58 }
59 
GetFoldStatus()60 FoldStatus FoldScreenPolicy::GetFoldStatus()
61 {
62     return lastFoldStatus_;
63 }
64 
SetFoldStatus(FoldStatus foldStatus)65 void FoldScreenPolicy::SetFoldStatus(FoldStatus foldStatus)
66 {
67     TLOGI(WmsLogTag::DMS, "FoldStatus: %{public}d", foldStatus);
68     currentFoldStatus_ = foldStatus;
69     lastFoldStatus_ = foldStatus;
70 }
71 
GetStartTimePoint()72 std::chrono::steady_clock::time_point FoldScreenPolicy::GetStartTimePoint()
73 {
74     return startTimePoint_;
75 }
76 
GetIsFirstFrameCommitReported()77 bool FoldScreenPolicy::GetIsFirstFrameCommitReported()
78 {
79     return isFirstFrameCommitReported_;
80 }
81 
SetIsFirstFrameCommitReported(bool isFirstFrameCommitReported)82 void FoldScreenPolicy::SetIsFirstFrameCommitReported(bool isFirstFrameCommitReported)
83 {
84     isFirstFrameCommitReported_ = isFirstFrameCommitReported;
85 }
86 
ClearState()87 void FoldScreenPolicy::ClearState()
88 {
89     currentDisplayMode_ = FoldDisplayMode::UNKNOWN;
90     currentFoldStatus_ = FoldStatus::UNKNOWN;
91 }
92 
ExitCoordination()93 void FoldScreenPolicy::ExitCoordination() {};
94 
ChangeOnTentMode(FoldStatus currentState)95 void FoldScreenPolicy::ChangeOnTentMode(FoldStatus currentState) {}
96 
ChangeOffTentMode()97 void FoldScreenPolicy::ChangeOffTentMode() {}
98 
GetModeChangeRunningStatus()99 bool FoldScreenPolicy::GetModeChangeRunningStatus()
100 {
101     TLOGE(WmsLogTag::DMS, "GetdisplayModeRunningStatus: %{public}d", GetdisplayModeRunningStatus());
102     auto currentTime = std::chrono::steady_clock::now();
103     auto intervalMs = std::chrono::duration_cast<std::chrono::milliseconds>(currentTime - startTimePoint_).count();
104     if (intervalMs > MODE_CHANGE_TIMEOUT_MS) {
105         TLOGE(WmsLogTag::DMS, "mode change timeout.");
106         return false;
107     }
108     return GetdisplayModeRunningStatus();
109 }
110 
GetdisplayModeRunningStatus()111 bool FoldScreenPolicy::GetdisplayModeRunningStatus()
112 {
113     return displayModeChangeRunning_.load();
114 }
115 
GetLastCacheDisplayMode()116 FoldDisplayMode FoldScreenPolicy::GetLastCacheDisplayMode()
117 {
118     return lastCachedisplayMode_.load();
119 }
120 
SetLastCacheDisplayMode(FoldDisplayMode mode)121 void FoldScreenPolicy::SetLastCacheDisplayMode(FoldDisplayMode mode)
122 {
123     lastCachedisplayMode_ = mode;
124 }
125 
getFoldingElapsedMs()126 int64_t FoldScreenPolicy::getFoldingElapsedMs()
127 {
128     if (endTimePoint_ < startTimePoint_) {
129         TLOGE(WmsLogTag::DMS, "invalid timepoint. endTimePoint less startTimePoint");
130         return 0;
131     }
132     auto elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(endTimePoint_ - startTimePoint_).count();
133     return static_cast<int64_t>(elapsed);
134 }
135 
AddOrRemoveDisplayNodeToTree(ScreenId screenId,int32_t command)136 void FoldScreenPolicy::AddOrRemoveDisplayNodeToTree(ScreenId screenId, int32_t command) {};
137 
GetScreenSnapshotRect()138 Drawing::Rect FoldScreenPolicy::GetScreenSnapshotRect()
139 {
140     Drawing::Rect snapshotRect = {0, 0, 0, 0};
141     return snapshotRect;
142 }
143 
SetMainScreenRegion(DMRect & mainScreenRegion)144 void FoldScreenPolicy::SetMainScreenRegion(DMRect& mainScreenRegion) {}
145 
SetIsClearingBootAnimation(bool isClearingBootAnimation)146 void FoldScreenPolicy::SetIsClearingBootAnimation(bool isClearingBootAnimation) {}
147 
GetAllCreaseRegion(std::vector<FoldCreaseRegionItem> & foldCreaseRegionItems) const148 void FoldScreenPolicy::GetAllCreaseRegion(std::vector<FoldCreaseRegionItem>& foldCreaseRegionItems) const {}
149 } // namespace OHOS::Rosen