diff --git a/window_scene/screen_session_manager/include/fold_screen_controller/dual_display_fold_policy.h b/window_scene/screen_session_manager/include/fold_screen_controller/dual_display_fold_policy.h index 733752e4933a11e7c0aed2e25befe56546c65449..fbd5809fdfc11e4c02737f5971209835342629c5 100644 --- a/window_scene/screen_session_manager/include/fold_screen_controller/dual_display_fold_policy.h +++ b/window_scene/screen_session_manager/include/fold_screen_controller/dual_display_fold_policy.h @@ -40,6 +40,7 @@ public: void ExitCoordination() override; void AddOrRemoveDisplayNodeToTree(ScreenId screenId, int32_t command) override; FoldDisplayMode GetModeMatchStatus() override; + void GetAllCreaseRegion(std::vector& foldCreaseRegionItems) const override; private: bool CheckDisplayMode(FoldDisplayMode displayMode); diff --git a/window_scene/screen_session_manager/include/fold_screen_controller/fold_screen_controller.h b/window_scene/screen_session_manager/include/fold_screen_controller/fold_screen_controller.h index db75e85d001e4f5ec1a2007ddf6fa6cca5cd29e0..30f2ca3be57e42ce7bab70eadb3af4129ace95d9 100644 --- a/window_scene/screen_session_manager/include/fold_screen_controller/fold_screen_controller.h +++ b/window_scene/screen_session_manager/include/fold_screen_controller/fold_screen_controller.h @@ -70,12 +70,14 @@ public: FoldDisplayMode GetLastCacheDisplayMode(); void AddOrRemoveDisplayNodeToTree(ScreenId screenId, int32_t command); void SetIsClearingBootAnimation(bool isClearingBootAnimation); + nlohmann::ordered_json GetFoldCreaseRegionJson(); private: sptr GetFoldScreenPolicy(DisplayDeviceType productType); sptr foldScreenPolicy_; sptr sensorFoldStateManager_; std::recursive_mutex& displayInfoMutex_; std::shared_ptr screenPowerTaskScheduler_; + std::vector foldCreaseRegionItems_; }; } // namespace OHOS::Rosen #endif //OHOS_ROSEN_WINDOW_SCENE_FOLD_SCREEN_CONTROLLER_H \ No newline at end of file diff --git a/window_scene/screen_session_manager/include/fold_screen_controller/fold_screen_policy.h b/window_scene/screen_session_manager/include/fold_screen_controller/fold_screen_policy.h index 9ae366b78e23b4b264580939fc8697a90e3999fb..c5b0c2195072548105da49aa9bda3b4e5d223dda 100644 --- a/window_scene/screen_session_manager/include/fold_screen_controller/fold_screen_policy.h +++ b/window_scene/screen_session_manager/include/fold_screen_controller/fold_screen_policy.h @@ -34,6 +34,14 @@ enum class DisplayModeChangeReason : uint32_t { INVALID, }; +struct FoldCreaseRegionItem { + DisplayOrientation orientation_; + FoldDisplayMode foldDisplayMode_; + FoldCreaseRegion region_; + FoldCreaseRegionItem(DisplayOrientation orientation, FoldDisplayMode foldDisplayMode, FoldCreaseRegion region) + : orientation_(orientation), foldDisplayMode_(foldDisplayMode), region_(region) {} +}; + class FoldScreenPolicy : public RefBase { public: FoldScreenPolicy(); @@ -57,6 +65,7 @@ public: virtual Drawing::Rect GetScreenSnapshotRect(); virtual void SetMainScreenRegion(DMRect& mainScreenRegion); virtual void SetIsClearingBootAnimation(bool isClearingBootAnimation); + virtual void GetAllCreaseRegion(std::vector& foldCreaseRegionItems) const; void ClearState(); FoldDisplayMode GetScreenDisplayMode(); FoldStatus GetFoldStatus(); diff --git a/window_scene/screen_session_manager/include/fold_screen_controller/secondary_display_fold_policy.h b/window_scene/screen_session_manager/include/fold_screen_controller/secondary_display_fold_policy.h index 28b75c00312f429f6626430dda3298003793d329..8996e3ba0d29339e42bd71ebc328b7ac1798d3b7 100644 --- a/window_scene/screen_session_manager/include/fold_screen_controller/secondary_display_fold_policy.h +++ b/window_scene/screen_session_manager/include/fold_screen_controller/secondary_display_fold_policy.h @@ -39,6 +39,7 @@ public: std::vector GetScreenParams() override; void ExitCoordination() override; void SetSecondaryDisplayModeChangeStatus(bool status) override; + void GetAllCreaseRegion(std::vector& foldCreaseRegionItems) const override; void AddOrRemoveDisplayNodeToTree(ScreenId screenId, int32_t command) override; private: void ChangeSuperScreenDisplayMode(sptr screenSession, diff --git a/window_scene/screen_session_manager/include/fold_screen_controller/single_display_fold_policy.h b/window_scene/screen_session_manager/include/fold_screen_controller/single_display_fold_policy.h index ba2d12cb1824e74bba837913b47101188700e86c..0d036c2b3bf8e7193f0b89754d150dcd8348b32b 100644 --- a/window_scene/screen_session_manager/include/fold_screen_controller/single_display_fold_policy.h +++ b/window_scene/screen_session_manager/include/fold_screen_controller/single_display_fold_policy.h @@ -41,6 +41,7 @@ public: void AddOrRemoveDisplayNodeToTree(ScreenId screenId, int32_t command) override {}; FoldDisplayMode GetModeMatchStatus() override; void SetIsClearingBootAnimation(bool isClearingBootAnimation) override; + void GetAllCreaseRegion(std::vector& foldCreaseRegionItems) const override; private: void ChangeScreenDisplayModeToMain(sptr screenSession, DisplayModeChangeReason reason = DisplayModeChangeReason::DEFAULT); diff --git a/window_scene/screen_session_manager/include/fold_screen_controller/single_display_pocket_fold_policy.h b/window_scene/screen_session_manager/include/fold_screen_controller/single_display_pocket_fold_policy.h index 45c837eda85948b5a673f3c08f606702a873eb30..a9f03391409277c3927c2d55be37f97360d119fc 100644 --- a/window_scene/screen_session_manager/include/fold_screen_controller/single_display_pocket_fold_policy.h +++ b/window_scene/screen_session_manager/include/fold_screen_controller/single_display_pocket_fold_policy.h @@ -41,6 +41,7 @@ public: void AddOrRemoveDisplayNodeToTree(ScreenId screenId, int32_t command) override; FoldDisplayMode GetModeMatchStatus() override; void BootAnimationFinishPowerInit() override; + void GetAllCreaseRegion(std::vector& foldCreaseRegionItems) const override; private: void ChangeScreenDisplayModeToMain(sptr screenSession, DisplayModeChangeReason reason = DisplayModeChangeReason::DEFAULT); diff --git a/window_scene/screen_session_manager/include/fold_screen_controller/super_fold_state_manager.h b/window_scene/screen_session_manager/include/fold_screen_controller/super_fold_state_manager.h index 96b9e59ec9674b3a24691a075e80a13e5c198a61..ebcd0bfd9aa679af5f79826968fc6757618ea6e2 100644 --- a/window_scene/screen_session_manager/include/fold_screen_controller/super_fold_state_manager.h +++ b/window_scene/screen_session_manager/include/fold_screen_controller/super_fold_state_manager.h @@ -22,6 +22,7 @@ #include #include #include +#include "nlohmann/json.hpp" #include "session/screen/include/screen_session.h" #include "dm_common.h" @@ -41,6 +42,14 @@ enum class ScreenDirectionType : uint32_t { class RSInterfaces; +struct SuperFoldCreaseRegionItem { + DisplayOrientation orientation_; + SuperFoldStatus superFoldStatus_; + FoldCreaseRegion region_; + SuperFoldCreaseRegionItem(DisplayOrientation orientation, SuperFoldStatus superFoldStatus, FoldCreaseRegion region) + : orientation_(orientation), superFoldStatus_(superFoldStatus), region_(region) {} +}; + class SuperFoldStateManager final { WM_DECLARE_SINGLE_INSTANCE_BASE(SuperFoldStateManager) public: @@ -73,6 +82,10 @@ public: DMError RefreshExternalRegion(); + void GetAllCreaseRegion(); + + nlohmann::ordered_json GetFoldCreaseRegionJson(); + private: std::atomic curState_ = SuperFoldStatus::UNKNOWN; sptr currentSuperFoldCreaseRegion_ = nullptr; @@ -81,6 +94,7 @@ private: void GetFoldCreaseRect(bool isVertical, const std::vector& foldRect, std::vector& foldCreaseRect) const; std::mutex superStatusMutex_; + std::vector superFoldCreaseRegionItems_; struct Transition { SuperFoldStatus nextState; std::function action; diff --git a/window_scene/screen_session_manager/src/fold_screen_controller/dual_display_fold_policy.cpp b/window_scene/screen_session_manager/src/fold_screen_controller/dual_display_fold_policy.cpp index 6d0732271b2c1e4f47cf7b859f6e878d1a3a6585..cf64385d542667c9d29e321c8a7c8a85983761aa 100644 --- a/window_scene/screen_session_manager/src/fold_screen_controller/dual_display_fold_policy.cpp +++ b/window_scene/screen_session_manager/src/fold_screen_controller/dual_display_fold_policy.cpp @@ -270,6 +270,25 @@ FoldCreaseRegion DualDisplayFoldPolicy::GetLiveCreaseRegion() return liveCreaseRegion_; } +void DualDisplayFoldPolicy::GetAllCreaseRegion(std::vector& foldCreaseRegionItems) const +{ + FoldCreaseRegionItem SCreaseItem{DisplayOrientation::LANDSCAPE, FoldDisplayMode::SUB, + FoldCreaseRegion(0, {})}; + FoldCreaseRegionItem MPorCreaseItem{DisplayOrientation::PORTRAIT, FoldDisplayMode::MAIN, + GetFoldCreaseRegion(false)}; + FoldCreaseRegionItem MLandCreaseItem{DisplayOrientation::LANDSCAPE, FoldDisplayMode::MAIN, + GetFoldCreaseRegion(true)}; + FoldCreaseRegionItem CPorCreaseItem{DisplayOrientation::PORTRAIT, FoldDisplayMode::COORDINATION, + GetFoldCreaseRegion(false)}; + FoldCreaseRegionItem CLandCreaseItem{DisplayOrientation::LANDSCAPE, FoldDisplayMode::COORDINATION, + GetFoldCreaseRegion(true)}; + foldCreaseRegionItems.push_back(SCreaseItem); + foldCreaseRegionItems.push_back(MPorCreaseItem); + foldCreaseRegionItems.push_back(MLandCreaseItem); + foldCreaseRegionItems.push_back(CPorCreaseItem); + foldCreaseRegionItems.push_back(CLandCreaseItem); +} + void DualDisplayFoldPolicy::LockDisplayStatus(bool locked) { TLOGI(WmsLogTag::DMS, "locked: %{public}d", locked); diff --git a/window_scene/screen_session_manager/src/fold_screen_controller/fold_screen_controller.cpp b/window_scene/screen_session_manager/src/fold_screen_controller/fold_screen_controller.cpp index 21257f6f231497b7172950ec7a471c1bf13fafe8..53a3085147d7457a67b0a95f3e9d56f4e6be41ed 100644 --- a/window_scene/screen_session_manager/src/fold_screen_controller/fold_screen_controller.cpp +++ b/window_scene/screen_session_manager/src/fold_screen_controller/fold_screen_controller.cpp @@ -71,6 +71,39 @@ FoldScreenController::~FoldScreenController() TLOGI(WmsLogTag::DMS, "FoldScreenController is destructed"); } +nlohmann::ordered_json FoldScreenController::GetFoldCreaseRegionJson() +{ + nlohmann::ordered_json ret = nlohmann::ordered_json::array(); + if (foldScreenPolicy_ == nullptr) { + return ret; + } + if (foldCreaseRegionItems_.size() == 0) { + foldScreenPolicy_->GetAllCreaseRegion(foldCreaseRegionItems_); + } + + for (const auto& foldCreaseRegionItem : foldCreaseRegionItems_) { + nlohmann::ordered_json capabilityInfo; + capabilityInfo["foldDisplayMode"] = + std::to_string(static_cast(foldCreaseRegionItem.foldDisplayMode_)); + capabilityInfo["displayOrientation"] = + std::to_string(static_cast(foldCreaseRegionItem.orientation_)); + capabilityInfo["creaseRects"]["displayId"] = + std::to_string(static_cast(foldCreaseRegionItem.region_.GetDisplayId())); + auto creaseRects = foldCreaseRegionItem.region_.GetCreaseRects(); + capabilityInfo["creaseRects"]["rects"] = nlohmann::ordered_json::array(); + for (const auto& creaseRect : creaseRects) { + capabilityInfo["creaseRects"]["rects"].push_back({ + {"posX", creaseRect.posX_}, + {"posY", creaseRect.posY_}, + {"width", creaseRect.width_}, + {"height", creaseRect.height_} + }); + } + ret.push_back(capabilityInfo); + } + return ret; +} + sptr FoldScreenController::GetFoldScreenPolicy(DisplayDeviceType productType) { sptr tempPolicy = nullptr; diff --git a/window_scene/screen_session_manager/src/fold_screen_controller/fold_screen_policy.cpp b/window_scene/screen_session_manager/src/fold_screen_controller/fold_screen_policy.cpp index 10295c72c3eca9856fef1744f742b77fc4a1c95f..de751f95423949539c33692d183f07f9a3804167 100644 --- a/window_scene/screen_session_manager/src/fold_screen_controller/fold_screen_policy.cpp +++ b/window_scene/screen_session_manager/src/fold_screen_controller/fold_screen_policy.cpp @@ -144,4 +144,6 @@ Drawing::Rect FoldScreenPolicy::GetScreenSnapshotRect() void FoldScreenPolicy::SetMainScreenRegion(DMRect& mainScreenRegion) {} void FoldScreenPolicy::SetIsClearingBootAnimation(bool isClearingBootAnimation) {} + +void FoldScreenPolicy::GetAllCreaseRegion(std::vector& foldCreaseRegionItems) const {} } // namespace OHOS::Rosen \ No newline at end of file diff --git a/window_scene/screen_session_manager/src/fold_screen_controller/secondary_display_fold_policy.cpp b/window_scene/screen_session_manager/src/fold_screen_controller/secondary_display_fold_policy.cpp index 669a42772807c228eec8fc77571786d37eb09463..da87eec604fc03516aae7d43ebe892021497415a 100644 --- a/window_scene/screen_session_manager/src/fold_screen_controller/secondary_display_fold_policy.cpp +++ b/window_scene/screen_session_manager/src/fold_screen_controller/secondary_display_fold_policy.cpp @@ -99,6 +99,28 @@ SecondaryDisplayFoldPolicy::SecondaryDisplayFoldPolicy(std::recursive_mutex& dis currentFoldCreaseRegion_ = new FoldCreaseRegion(screenIdFull, rect); } +void SecondaryDisplayFoldPolicy::GetAllCreaseRegion(std::vector& foldCreaseRegionItems) const +{ + FoldCreaseRegionItem MLandCreaseItem{DisplayOrientation::LANDSCAPE, FoldDisplayMode::MAIN, + FoldCreaseRegion(0, {})}; + FoldCreaseRegionItem MPorCreaseItem{DisplayOrientation::PORTRAIT, FoldDisplayMode::MAIN, + FoldCreaseRegion(0, {})}; + FoldCreaseRegionItem FLandCreaseItem{DisplayOrientation::LANDSCAPE, FoldDisplayMode::FULL, + GetStatusFullFoldCreaseRegion(false)}; + FoldCreaseRegionItem FPorCreaseItem{DisplayOrientation::PORTRAIT, FoldDisplayMode::FULL, + GetStatusFullFoldCreaseRegion(true)}; + FoldCreaseRegionItem GLandCreaseItem{DisplayOrientation::LANDSCAPE, FoldDisplayMode::GLOBAL_FULL, + GetStatusGlobalFullFoldCreaseRegion(false)}; + FoldCreaseRegionItem GPorCreaseItem{DisplayOrientation::PORTRAIT, FoldDisplayMode::GLOBAL_FULL, + GetStatusGlobalFullFoldCreaseRegion(true)}; + foldCreaseRegionItems.push_back(MLandCreaseItem); + foldCreaseRegionItems.push_back(MPorCreaseItem); + foldCreaseRegionItems.push_back(FLandCreaseItem); + foldCreaseRegionItems.push_back(FPorCreaseItem); + foldCreaseRegionItems.push_back(GLandCreaseItem); + foldCreaseRegionItems.push_back(GPorCreaseItem); +} + FoldCreaseRegion SecondaryDisplayFoldPolicy::GetStatusFullFoldCreaseRegion(bool isVertical) const { std::vector foldRect = FoldScreenStateInternel::StringFoldRectSplitToInt(g_FoldScreenRect, diff --git a/window_scene/screen_session_manager/src/fold_screen_controller/single_display_fold_policy.cpp b/window_scene/screen_session_manager/src/fold_screen_controller/single_display_fold_policy.cpp index cfc4316502924ceb607f68750f43e94f41a44b19..0b344b8840246d15194a49f64f29ff77a7169593 100644 --- a/window_scene/screen_session_manager/src/fold_screen_controller/single_display_fold_policy.cpp +++ b/window_scene/screen_session_manager/src/fold_screen_controller/single_display_fold_policy.cpp @@ -243,6 +243,19 @@ FoldCreaseRegion SingleDisplayFoldPolicy::GetLiveCreaseRegion() return liveCreaseRegion_; } +void SingleDisplayFoldPolicy::GetAllCreaseRegion(std::vector& foldCreaseRegionItems) const +{ + FoldCreaseRegionItem MCreaseItem{DisplayOrientation::LANDSCAPE, FoldDisplayMode::MAIN, + FoldCreaseRegion(0, {})}; + FoldCreaseRegionItem FPorCreaseItem{DisplayOrientation::PORTRAIT, FoldDisplayMode::FULL, + GetFoldCreaseRegion(true)}; + FoldCreaseRegionItem FLandCreaseItem{DisplayOrientation::LANDSCAPE, FoldDisplayMode::FULL, + GetFoldCreaseRegion(false)}; + foldCreaseRegionItems.push_back(MCreaseItem); + foldCreaseRegionItems.push_back(FPorCreaseItem); + foldCreaseRegionItems.push_back(FLandCreaseItem); +} + void SingleDisplayFoldPolicy::LockDisplayStatus(bool locked) { TLOGI(WmsLogTag::DMS, "LockDisplayStatus locked: %{public}d", locked); diff --git a/window_scene/screen_session_manager/src/fold_screen_controller/single_display_pocket_fold_policy.cpp b/window_scene/screen_session_manager/src/fold_screen_controller/single_display_pocket_fold_policy.cpp index b543418e24b9d62c53022399b1159b80eff6eb6e..4e4c6e62cfa1f6dd40ae806d368ce9d1990ba90c 100644 --- a/window_scene/screen_session_manager/src/fold_screen_controller/single_display_pocket_fold_policy.cpp +++ b/window_scene/screen_session_manager/src/fold_screen_controller/single_display_pocket_fold_policy.cpp @@ -674,6 +674,25 @@ void SingleDisplayPocketFoldPolicy::CloseCoordinationScreen() ScreenSessionManager::GetInstance().SetCoordinationFlag(false); } +void SingleDisplayPocketFoldPolicy::GetAllCreaseRegion(std::vector& foldCreaseRegionItems) const +{ + FoldCreaseRegionItem MCreaseItem{DisplayOrientation::LANDSCAPE, FoldDisplayMode::MAIN, + FoldCreaseRegion(0, {})}; + FoldCreaseRegionItem FPorCreaseItem{DisplayOrientation::PORTRAIT, FoldDisplayMode::FULL, + GetFoldCreaseRegion(false)}; + FoldCreaseRegionItem FLandCreaseItem{DisplayOrientation::LANDSCAPE, FoldDisplayMode::FULL, + GetFoldCreaseRegion(true)}; + FoldCreaseRegionItem CPorCreaseItem{DisplayOrientation::PORTRAIT, FoldDisplayMode::COORDINATION, + GetFoldCreaseRegion(false)}; + FoldCreaseRegionItem CLandCreaseItem{DisplayOrientation::LANDSCAPE, FoldDisplayMode::COORDINATION, + GetFoldCreaseRegion(true)}; + foldCreaseRegionItems.push_back(MCreaseItem); + foldCreaseRegionItems.push_back(FPorCreaseItem); + foldCreaseRegionItems.push_back(FLandCreaseItem); + foldCreaseRegionItems.push_back(CPorCreaseItem); + foldCreaseRegionItems.push_back(CLandCreaseItem); +} + void SingleDisplayPocketFoldPolicy::ExitCoordination() { std::lock_guard lock(coordinationMutex_); diff --git a/window_scene/screen_session_manager/src/fold_screen_controller/super_fold_state_manager.cpp b/window_scene/screen_session_manager/src/fold_screen_controller/super_fold_state_manager.cpp index 2ee4487eae0d1141d38ad54e88dc121b533aa8ae..6b3d245a09cbfe498842386e20b227c10490720f 100644 --- a/window_scene/screen_session_manager/src/fold_screen_controller/super_fold_state_manager.cpp +++ b/window_scene/screen_session_manager/src/fold_screen_controller/super_fold_state_manager.cpp @@ -386,6 +386,60 @@ FoldCreaseRegion SuperFoldStateManager::GetLiveCreaseRegion() return liveCreaseRegion_; } +nlohmann::ordered_json SuperFoldStateManager::GetFoldCreaseRegionJson() +{ + if (superFoldCreaseRegionItems_.size() == 0) { + GetAllCreaseRegion(); + } + nlohmann::ordered_json ret = nlohmann::ordered_json::array(); + for (const auto& foldCreaseRegionItem : superFoldCreaseRegionItems_) { + nlohmann::ordered_json capabilityInfo; + capabilityInfo["superFoldStatus"] = + std::to_string(static_cast(foldCreaseRegionItem.superFoldStatus_)); + capabilityInfo["displayOrientation"] = + std::to_string(static_cast(foldCreaseRegionItem.orientation_)); + capabilityInfo["creaseRects"]["displayId"] = + std::to_string(static_cast(foldCreaseRegionItem.region_.GetDisplayId())); + auto creaseRects = foldCreaseRegionItem.region_.GetCreaseRects(); + capabilityInfo["creaseRects"]["rects"] = nlohmann::ordered_json::array(); + for (const auto& creaseRect : creaseRects) { + capabilityInfo["creaseRects"]["rects"].push_back({ + {"posX", creaseRect.posX_}, + {"posY", creaseRect.posY_}, + {"width", creaseRect.width_}, + {"height", creaseRect.height_} + }); + } + ret.push_back(capabilityInfo); + } + return ret; +} + +void SuperFoldStateManager::GetAllCreaseRegion() +{ + SuperFoldCreaseRegionItem FCreaseItem{DisplayOrientation::LANDSCAPE, SuperFoldStatus::FOLDED, + FoldCreaseRegion(0, {})}; + SuperFoldCreaseRegionItem HPorCreaseItem{DisplayOrientation::PORTRAIT, SuperFoldStatus::HALF_FOLDED, + GetFoldCreaseRegion(false)}; + SuperFoldCreaseRegionItem HLandCreaseItem{DisplayOrientation::LANDSCAPE, SuperFoldStatus::HALF_FOLDED, + GetFoldCreaseRegion(true)}; + SuperFoldCreaseRegionItem EPorCreaseItem{DisplayOrientation::PORTRAIT, SuperFoldStatus::EXPANDED, + GetFoldCreaseRegion(false)}; + SuperFoldCreaseRegionItem ELandCreaseItem{DisplayOrientation::LANDSCAPE, SuperFoldStatus::EXPANDED, + GetFoldCreaseRegion(true)}; + SuperFoldCreaseRegionItem KPorCreaseItem{DisplayOrientation::PORTRAIT, SuperFoldStatus::KEYBOARD, + GetFoldCreaseRegion(false)}; + SuperFoldCreaseRegionItem KLandCreaseItem{DisplayOrientation::LANDSCAPE, SuperFoldStatus::KEYBOARD, + GetFoldCreaseRegion(true)}; + superFoldCreaseRegionItems_.push_back(FCreaseItem); + superFoldCreaseRegionItems_.push_back(HPorCreaseItem); + superFoldCreaseRegionItems_.push_back(HLandCreaseItem); + superFoldCreaseRegionItems_.push_back(EPorCreaseItem); + superFoldCreaseRegionItems_.push_back(ELandCreaseItem); + superFoldCreaseRegionItems_.push_back(KPorCreaseItem); + superFoldCreaseRegionItems_.push_back(KLandCreaseItem); +} + void SuperFoldStateManager::HandleDisplayNotify(SuperFoldStatusChangeEvents changeEvent) { TLOGI(WmsLogTag::DMS, "changeEvent: %{public}d", static_cast(changeEvent)); diff --git a/window_scene/screen_session_manager/src/screen_session_manager.cpp b/window_scene/screen_session_manager/src/screen_session_manager.cpp index 66e98b6ebac8def0649acbb9ff57b0d0c9ca9af8..1d68aef0c9ae0e2047127de4727bcee3cdf45c77 100644 --- a/window_scene/screen_session_manager/src/screen_session_manager.cpp +++ b/window_scene/screen_session_manager/src/screen_session_manager.cpp @@ -9350,6 +9350,12 @@ DMError ScreenSessionManager::GetSecondaryDisplayCapability(std::string& capabil nlohmann::ordered_json gCapability = GetCapabilityJson(FoldStatus::FOLD_STATE_EXPAND_WITH_SECOND_EXPAND, FoldDisplayMode::FULL, ROTATION_DEFAULT, orientation); jsonDisplayCapabilityList["capability"].push_back(std::move(gCapability)); +#ifdef FOLD_ABILITY_ENABLE + if (foldScreenController_) { + nlohmann::ordered_json foldCreaseRegion = foldScreenController_->GetFoldCreaseRegionJson(); + jsonDisplayCapabilityList["allCreaseRegion"] = foldCreaseRegion; + } +#endif capabilitInfo = jsonDisplayCapabilityList.dump(); return DMError::DM_OK; @@ -9373,6 +9379,12 @@ DMError ScreenSessionManager::GetFoldableDeviceCapability(std::string& capabilit nlohmann::ordered_json foldCapabilityInfo = GetCapabilityJson(foldStatus, foldDisplayMode, ROTATION_DEFAULT, ORIENTATION_DEFAULT); jsonDisplayCapabilityList["capability"].push_back(std::move(foldCapabilityInfo)); +#ifdef FOLD_ABILITY_ENABLE + if (foldScreenController_) { + nlohmann::ordered_json foldCreaseRegion = foldScreenController_->GetFoldCreaseRegionJson(); + jsonDisplayCapabilityList["allCreaseRegion"] = foldCreaseRegion; + } +#endif capabilitInfo = jsonDisplayCapabilityList.dump(); return DMError::DM_OK; @@ -9392,6 +9404,10 @@ DMError ScreenSessionManager::GetSuperFoldCapability(std::string& capabilitInfo) nlohmann::ordered_json halfFoldCapabilityInfo = GetCapabilityJson(FoldStatus::HALF_FOLD, FoldDisplayMode::UNKNOWN, ROTATION_DEFAULT, ORIENTATION_DEFAULT); jsonDisplayCapabilityList["capability"].push_back(std::move(halfFoldCapabilityInfo)); +#ifdef FOLD_ABILITY_ENABLE + nlohmann::ordered_json foldCreaseRegion = SuperFoldStateManager::GetInstance().GetFoldCreaseRegionJson(); + jsonDisplayCapabilityList["allCreaseRegion"] = foldCreaseRegion; +#endif capabilitInfo = jsonDisplayCapabilityList.dump(); return DMError::DM_OK;