From 2f69c7550abc0498982ca70a977d7230ff46557c Mon Sep 17 00:00:00 2001 From: Bowon Ryu Date: Tue, 21 Mar 2023 11:09:36 +0900 Subject: [PATCH] [Tizen] Add EnsureFontClientCreated to StyleMonitor to prevent a FontClient from being created faster than necessary, do not create a FontClient in the constructor. Change-Id: I496c71816f953c769558f23abff11ae03fcef0f8 Signed-off-by: Bowon Ryu --- dali/devel-api/adaptor-framework/style-monitor.cpp | 5 +++++ dali/devel-api/adaptor-framework/style-monitor.h | 9 ++++++++ .../internal/styling/common/style-monitor-impl.cpp | 24 ++++++++++++++++------ dali/internal/styling/common/style-monitor-impl.h | 5 +++++ 4 files changed, 37 insertions(+), 6 deletions(-) diff --git a/dali/devel-api/adaptor-framework/style-monitor.cpp b/dali/devel-api/adaptor-framework/style-monitor.cpp index 233505a..a65b61b 100644 --- a/dali/devel-api/adaptor-framework/style-monitor.cpp +++ b/dali/devel-api/adaptor-framework/style-monitor.cpp @@ -49,6 +49,11 @@ StyleMonitor StyleMonitor::DownCast(BaseHandle handle) return StyleMonitor(dynamic_cast(handle.GetObjectPtr())); } +bool StyleMonitor::EnsureFontClientCreated() +{ + return GetImplementation(*this).EnsureFontClientCreated(); +} + std::string StyleMonitor::GetDefaultFontFamily() const { return GetImplementation(*this).GetDefaultFontFamily(); diff --git a/dali/devel-api/adaptor-framework/style-monitor.h b/dali/devel-api/adaptor-framework/style-monitor.h index 2708eec..fabf58f 100644 --- a/dali/devel-api/adaptor-framework/style-monitor.h +++ b/dali/devel-api/adaptor-framework/style-monitor.h @@ -118,6 +118,15 @@ public: // Creation & Destruction static StyleMonitor DownCast(BaseHandle handle); public: // Style Information + + /** + * @brief Ensure the font client has been created. + * + * If font client doesn't exist, create it and set default values. + * @return true if the font client has been created. + */ + bool EnsureFontClientCreated(); + /** * @brief Retrieves the default font family. * @return The default font family. diff --git a/dali/internal/styling/common/style-monitor-impl.cpp b/dali/internal/styling/common/style-monitor-impl.cpp index 3e9000d..01adfbd 100644 --- a/dali/internal/styling/common/style-monitor-impl.cpp +++ b/dali/internal/styling/common/style-monitor-impl.cpp @@ -83,23 +83,32 @@ Dali::StyleMonitor StyleMonitor::Get() StyleMonitor::StyleMonitor() : mDefaultFontSize(-1) { - mFontClient = TextAbstraction::FontClient::Get(); - GetSystemDefaultFontFamily(mFontClient, mDefaultFontFamily); - DALI_LOG_INFO(gLogFilter, Debug::Verbose, "StyleMonitor::StyleMonitor::DefaultFontFamily(%s)\n", mDefaultFontFamily.c_str()); - mDefaultFontSize = mFontClient.GetDefaultFontSize(); } StyleMonitor::~StyleMonitor() { } +bool StyleMonitor::EnsureFontClientCreated() +{ + if(!mFontClient) + { + mFontClient = TextAbstraction::FontClient::Get(); + GetSystemDefaultFontFamily(mFontClient, mDefaultFontFamily); + DALI_LOG_INFO(gLogFilter, Debug::Verbose, "StyleMonitor::StyleMonitor::DefaultFontFamily(%s)\n", mDefaultFontFamily.c_str()); + mDefaultFontSize = mFontClient.GetDefaultFontSize(); + } + + return mFontClient != nullptr ? true : false; +} + void StyleMonitor::StyleChanged(StyleChange::Type styleChange) { switch(styleChange) { case StyleChange::DEFAULT_FONT_CHANGE: { - if(mFontClient) + if(EnsureFontClientCreated()) { mFontClient.ResetSystemDefaults(); GetSystemDefaultFontFamily(mFontClient, mDefaultFontFamily); @@ -110,7 +119,10 @@ void StyleMonitor::StyleChanged(StyleChange::Type styleChange) case StyleChange::DEFAULT_FONT_SIZE_CHANGE: { - mDefaultFontSize = mFontClient.GetDefaultFontSize(); + if(EnsureFontClientCreated()) + { + mDefaultFontSize = mFontClient.GetDefaultFontSize(); + } break; } diff --git a/dali/internal/styling/common/style-monitor-impl.h b/dali/internal/styling/common/style-monitor-impl.h index 14f8fb5..a8bc511 100644 --- a/dali/internal/styling/common/style-monitor-impl.h +++ b/dali/internal/styling/common/style-monitor-impl.h @@ -63,6 +63,11 @@ public: // Style Information /** + * @copydoc Dali::StyleMonitor::EnsureFontClientCreated() + */ + bool EnsureFontClientCreated(); + + /** * @copydoc Dali::StyleMonitor::GetDefaultFontFamily() const */ std::string GetDefaultFontFamily() const; -- 2.7.4