From 4eb5b1633702ea050215ab2072a0dec9b7978668 Mon Sep 17 00:00:00 2001 From: chenlulu Date: Thu, 31 Jul 2025 09:32:04 +0800 Subject: [PATCH] SCM update Signed-off-by: chenlulu --- rosen/modules/render_service/BUILD.gn | 8 ++++++-- .../screen_manager/rs_screen_manager.cpp | 2 +- .../screen_manager/rs_screen_manager.h | 18 +++++++++++++----- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/rosen/modules/render_service/BUILD.gn b/rosen/modules/render_service/BUILD.gn index 4a73ddf9f2..d87b51929f 100644 --- a/rosen/modules/render_service/BUILD.gn +++ b/rosen/modules/render_service/BUILD.gn @@ -159,8 +159,6 @@ ohos_shared_library("librender_service") { "core/pipeline/rs_processor_factory.cpp", "core/pipeline/rs_unmarshal_task_manager.cpp", "core/pipeline/slr_scale/rs_slr_scale.cpp", - "screen_manager/rs_screen.cpp", - "screen_manager/rs_screen_manager.cpp", "core/system/rs_system_parameters.cpp", "core/transaction/rs_irender_service_connection_ipc_interface_code_access_verifier.cpp", "core/transaction/rs_irender_service_ipc_interface_code_access_verifier.cpp", @@ -168,6 +166,10 @@ ohos_shared_library("librender_service") { "core/transaction/rs_render_service_security_utils.cpp", "core/transaction/rs_render_service_stub.cpp", "core/transaction/rs_unmarshal_thread.cpp", + "screen_manager/callback/rs_screen_callback_manager.cpp", + "screen_manager/public/rs_screen_manager_agent.cpp", + "screen_manager/rs_screen.cpp", + "screen_manager/rs_screen_manager.cpp", ] #main @@ -379,6 +381,7 @@ ohos_shared_library("librender_service") { "$graphic_2d_root/rosen/modules/composer/hdi_backend/include", "$graphic_2d_root/rosen/modules/frame_report/include", "$graphic_2d_root/rosen/modules/render_frame_trace/include", + "$graphic_2d_root/rosen/modules/render_service", "$graphic_2d_root/rosen/modules/render_service_base/include", "$graphic_2d_root/rosen/modules/render_service_base/src", "$graphic_2d_root/rosen/modules/utils", @@ -614,6 +617,7 @@ ohos_executable("render_service") { "core", "main", "$graphic_2d_root/interfaces/inner_api/common", + "$graphic_2d_root/rosen/modules/render_service", "$graphic_2d_root/utils/color_manager/export", "$graphic_2d_root/utils/socketpair/export", ] diff --git a/rosen/modules/render_service/screen_manager/rs_screen_manager.cpp b/rosen/modules/render_service/screen_manager/rs_screen_manager.cpp index c00985837f..f0e06cb151 100644 --- a/rosen/modules/render_service/screen_manager/rs_screen_manager.cpp +++ b/rosen/modules/render_service/screen_manager/rs_screen_manager.cpp @@ -2595,7 +2595,7 @@ void RSScreenManager::InitLoadOptParams(LoadOptParamsForScreen& loadOptParamsFor sptr CreateOrGetScreenManager() { - return impl::RSScreenManager::GetInstance(); + return RSScreenManager::GetInstance(); } } // namespace Rosen } // namespace OHOS diff --git a/rosen/modules/render_service/screen_manager/rs_screen_manager.h b/rosen/modules/render_service/screen_manager/rs_screen_manager.h index 9a26b33e02..fef6803c71 100644 --- a/rosen/modules/render_service/screen_manager/rs_screen_manager.h +++ b/rosen/modules/render_service/screen_manager/rs_screen_manager.h @@ -70,11 +70,18 @@ enum class FoldState : uint32_t { class RSScreenManager { public: + static sptr GetInstance() noexcept; + + template + std::unique_ptr RegisterCallback(EventCode code, Callable&& callable) { + return callbackManager_.RegisterCallback(code, callable); + } + + void UnregisterCallback(std::unique_ptr& token) { + callbackManager_.UnregisterCallback(token); + } + bool Init() noexcept ; - RegisterHotPlugListener(); - RegisterRefreshListener(); - RegisterHwcDeadListener(); - RegisterScreenVBlankIdleListener(); void ProcessScreenHotPlugEvents() ; bool TrySimpleProcessHotPlugEvents() ; #ifdef RS_SUBSCRIBE_SENSOR_ENABLE @@ -337,6 +344,7 @@ private: uint64_t frameId_ = 0; // only used by SetScreenConstraint, called in hardware thread per frame static std::once_flag createFlag_; + static sptr instance_; std::atomic powerOffNeedProcessOneFrame_ = false; @@ -367,7 +375,7 @@ private: std::unordered_map> screenWhiteList_; LoadOptParamsForScreen loadOptParamsForScreen_ = {}; - std::unique_ptr rsScreenCallbackManager_ = nullptr; + std::unique_ptr callbackManager_ = nullptr; }; } // namespace Rosen } // namespace OHOS -- Gitee