Add time function to check text performance
[platform/core/uifw/dali-adaptor.git] / dali / devel-api / text-abstraction / font-client.cpp
index 133b1ad..116c00a 100644 (file)
@@ -19,6 +19,7 @@
 #include <dali/devel-api/text-abstraction/font-client.h>
 
 // INTERNAL INCLUDES
+#include <dali/devel-api/adaptor-framework/environment-variable.h>
 #include <dali/internal/text/text-abstraction/font-client-impl.h>
 
 namespace Dali
@@ -50,6 +51,30 @@ const Size FontClient::MAX_SIZE_FIT_IN_ATLAS(MAX_TEXT_ATLAS_WIDTH - PADDING_TEXT
 
 const uint32_t FontClient::NUMBER_OF_POINTS_PER_ONE_UNIT_OF_POINT_SIZE = 64u; //Found this value from toolkit
 
+// For Debug
+static    bool     TEXT_PERFORMANCE_LOG_SET                = false;
+static    uint32_t TEXT_PERFORMANCE_LOG_THRESHOLD_TIME     = 0u;
+constexpr auto     TEXT_PERFORMANCE_LOG_THRESHOLD_TIME_ENV = "DALI_TEXT_PERFORMANCE_LOG_THRESHOLD_TIME";
+
+uint32_t FontClient::GetPerformanceLogThresholdTime()
+{
+  uint32_t time = TEXT_PERFORMANCE_LOG_THRESHOLD_TIME;
+  if(!TEXT_PERFORMANCE_LOG_SET)
+  {
+    // Threshold time in miliseconds.
+    auto timeString = Dali::EnvironmentVariable::GetEnvironmentVariable(TEXT_PERFORMANCE_LOG_THRESHOLD_TIME_ENV);
+    time = timeString ? static_cast<uint32_t>(std::atoi(timeString)) : 0u;
+    TEXT_PERFORMANCE_LOG_THRESHOLD_TIME = time;
+    TEXT_PERFORMANCE_LOG_SET = true;
+  }
+  return time;
+}
+
+bool FontClient::IsPerformanceLogEnabled()
+{
+  return GetPerformanceLogThresholdTime() > 0 ? true : false;
+}
+
 // FontClient
 
 FontClient FontClient::Get()
@@ -112,6 +137,11 @@ void FontClient::GetDefaultFonts(FontList& defaultFonts)
   GetImplementation(*this).GetDefaultFonts(defaultFonts);
 }
 
+void FontClient::InitDefaultFontDescription()
+{
+  GetImplementation(*this).InitDefaultFontDescription();
+}
+
 void FontClient::GetDefaultPlatformFontDescription(FontDescription& fontDescription)
 {
   GetImplementation(*this).GetDefaultPlatformFontDescription(fontDescription);
@@ -299,9 +329,19 @@ FontClient FontClientPreInitialize()
   return Internal::FontClient::PreInitialize();
 }
 
-void FontClientPreCache(const FontFamilyList& fallbackFamilyList, const FontFamilyList& extraFamilyList, const FontFamily& localeFamily, bool useThread)
+void FontClientPreCache(const FontFamilyList& fallbackFamilyList, const FontFamilyList& extraFamilyList, const FontFamily& localeFamily, bool useThread, bool syncCreation)
+{
+  Internal::FontClient::PreCache(fallbackFamilyList, extraFamilyList, localeFamily, useThread, syncCreation);
+}
+
+void FontClientFontPreLoad(const FontPathList& fontPathList, const FontPathList& memoryFontPathList, bool useThread, bool syncCreation)
+{
+  Internal::FontClient::PreLoad(fontPathList, memoryFontPathList, useThread, syncCreation);
+}
+
+void FontClientJoinFontThreads()
 {
-  Internal::FontClient::PreCache(fallbackFamilyList, extraFamilyList, localeFamily, useThread);
+  Internal::FontClient::JoinFontThreads();
 }
 
 } // namespace TextAbstraction