From 8cbcac07c7c00d62001c0d7f6d3e0bdaabe931bb Mon Sep 17 00:00:00 2001 From: ShaoboFeng Date: Fri, 7 Jul 2023 17:04:56 +0800 Subject: [PATCH] move rs init to child thread --- .../core/pipeline/rs_render_service.cpp | 13 ++++++++++--- .../core/pipeline/rs_render_service.h | 7 ++++++- .../rosen/modules/render_service/ft_build/BUILD.gn | 3 ++- .../modules/render_service_base/ft_build/BUILD.gn | 3 +-- 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/display_server/rosen/modules/render_service/core/pipeline/rs_render_service.cpp b/display_server/rosen/modules/render_service/core/pipeline/rs_render_service.cpp index 1521699..c2acd2b 100644 --- a/display_server/rosen/modules/render_service/core/pipeline/rs_render_service.cpp +++ b/display_server/rosen/modules/render_service/core/pipeline/rs_render_service.cpp @@ -75,7 +75,7 @@ bool RSRenderService::Init() RSQosThread::GetInstance()->appVSyncDistributor_ = appVSyncDistributor_; RSQosThread::ThreadStart(); -#ifndef __FANGTIAN__ +#ifndef _FANGTIAN // Wait samgr ready for up to 5 second to ensure adding service to samgr. int status = WaitParameter("bootevent.samgr.ready", "true", 5); if (status != 0) { @@ -92,16 +92,22 @@ void RSRenderService::Run() mainThread_->Start(); } +#ifdef _FANGTIAN void RSRenderService::OnStart() { RS_LOGI("RSRenderService::OnStart"); - Init(); - + sem_init(&initThreadFinish, 0, 0); std::thread rsThread([this]() { + Init(); + sem_post(&initThreadFinish); Run(); }); rsThread.detach(); + if(0 != sem_wait(&initThreadFinish)) { + RS_LOGE("wait start rs failed"); + } + if (!Publish(this)) { RS_LOGE("Publish failed"); } @@ -116,6 +122,7 @@ void RSRenderService::OnAddSystemAbility(int32_t systemAbilityId, const std::str { RS_LOGI("systemAbilityId: %{public}d, start", systemAbilityId); } +#endif //_FANGTIAN sptr RSRenderService::CreateConnection(const sptr& token) { diff --git a/display_server/rosen/modules/render_service/core/pipeline/rs_render_service.h b/display_server/rosen/modules/render_service/core/pipeline/rs_render_service.h index 18fe54c..1d295df 100644 --- a/display_server/rosen/modules/render_service/core/pipeline/rs_render_service.h +++ b/display_server/rosen/modules/render_service/core/pipeline/rs_render_service.h @@ -18,7 +18,9 @@ #include #include - +#ifdef _FANGTIAN +#include +#endif #include #include #include "screen_manager/rs_screen_manager.h" @@ -73,6 +75,9 @@ private: sptr rsVSyncDistributor_; sptr appVSyncDistributor_; +#ifdef _FANGTIAN + sem_t initThreadFinish; +#endif }; } // Rosen } // OHOS diff --git a/display_server/rosen/modules/render_service/ft_build/BUILD.gn b/display_server/rosen/modules/render_service/ft_build/BUILD.gn index cac0046..4f51d6e 100644 --- a/display_server/rosen/modules/render_service/ft_build/BUILD.gn +++ b/display_server/rosen/modules/render_service/ft_build/BUILD.gn @@ -22,7 +22,8 @@ group("render_service_group") { } ft_shared_library("librender_service") { - defines = gpu_defines + defines = ft_defines + defines += gpu_defines if (use_musl) { defines += [ "FRAME_AWARE_TRACE" ] } diff --git a/display_server/rosen/modules/render_service_base/ft_build/BUILD.gn b/display_server/rosen/modules/render_service_base/ft_build/BUILD.gn index 8c298f0..318f41e 100644 --- a/display_server/rosen/modules/render_service_base/ft_build/BUILD.gn +++ b/display_server/rosen/modules/render_service_base/ft_build/BUILD.gn @@ -25,8 +25,7 @@ config("render_service_base_public_config") { } ft_source_set("render_service_base_src") { - defines = ["__FANGTIAN__"] - defines += [ "MODULE_RSB" ] + defines = [ "MODULE_RSB" ] sources = [ #animation -- Gitee