Fix for PreInitialize, including FontClient
[platform/core/uifw/dali-adaptor.git] / dali / internal / text / text-abstraction / font-client-impl.cpp
index 862ff7b..4e82a54 100755 (executable)
@@ -24,7 +24,7 @@
 #endif
 
 // INTERNAL INCLUDES
-#include <dali/devel-api/adaptor-framework/singleton-service.h>
+#include <dali/devel-api/common/singleton-service.h>
 #include <dali/internal/text/text-abstraction/font-client-plugin-impl.h>
 
 #include <dali/devel-api/text-abstraction/glyph-info.h>
@@ -38,6 +38,8 @@ namespace TextAbstraction
 namespace Internal
 {
 
+Dali::TextAbstraction::FontClient FontClient::gPreInitializedFontClient( NULL );
+
 FontClient::FontClient()
 : mPlugin( nullptr ),
   mDpiHorizontal( 0 ),
@@ -67,7 +69,16 @@ Dali::TextAbstraction::FontClient FontClient::Get()
     }
     else // create and register the object
     {
-      fontClientHandle = Dali::TextAbstraction::FontClient( new FontClient );
+      if( gPreInitializedFontClient )
+      {
+        fontClientHandle = gPreInitializedFontClient;
+        gPreInitializedFontClient.Reset(); // No longer needed
+      }
+      else
+      {
+        fontClientHandle = Dali::TextAbstraction::FontClient( new FontClient );
+      }
+
       service.Register( typeid( fontClientHandle ), fontClientHandle );
     }
   }
@@ -75,6 +86,17 @@ Dali::TextAbstraction::FontClient FontClient::Get()
   return fontClientHandle;
 }
 
+Dali::TextAbstraction::FontClient FontClient::PreInitialize()
+{
+  gPreInitializedFontClient = Dali::TextAbstraction::FontClient( new FontClient );
+
+  // Make DefaultFontDescription cached
+  Dali::TextAbstraction::FontDescription defaultFontDescription;
+  gPreInitializedFontClient.GetDefaultPlatformFontDescription( defaultFontDescription );
+
+  return gPreInitializedFontClient;
+}
+
 void FontClient::ClearCache()
 {
   if( mPlugin )