ImfManager - Typo fix
[platform/core/uifw/dali-adaptor.git] / adaptors / x11 / imf-manager-impl-x.cpp
index 3e681b0..cdbaffe 100644 (file)
@@ -119,38 +119,26 @@ void ImfDeleteSurrounding( void *data, Ecore_IMF_Context *imfContext, void *even
 
 BaseHandle Create()
 {
-  BaseHandle handle( ImfManager::Get() );
+  return ImfManager::Get();
+}
 
-  Dali::SingletonService service( SingletonService::Get() );
-  if ( !handle && Adaptor::IsAvailable() && service )
-  {
-    Adaptor& adaptorImpl( Adaptor::GetImplementation( Adaptor::Get() ) );
+TypeRegistration IMF_MANAGER_TYPE( typeid(Dali::ImfManager), typeid(Dali::BaseHandle), Create );
 
-    // The Ecore_X_Window needs to use the ImfManager.
-    // Only when the render surface is window, we can get the Ecore_X_Window.
-    Ecore_X_Window ecoreXwin( 0 );
-    Dali::RenderSurface& surface( adaptorImpl.GetSurface() );
-    if( surface.GetType() == Dali::RenderSurface::WINDOW )
-    {
-      ecoreXwin = AnyCast< Ecore_X_Window >( adaptorImpl.GetSurface().GetSurface() );
-    }
+} // unnamed namespace
 
-    // If we fail to get Ecore_X_Window, we can't use the ImfManager correctly.
-    // Thus you have to call "ecore_imf_context_client_window_set" somewhere.
-    // In EvasPlugIn, this function is called in EvasPlugin::ConnectEcoreEvent().
+bool ImfManager::IsAvailable()
+{
+  bool available( false );
 
-    Dali::ImfManager manager = Dali::ImfManager( new ImfManager( ecoreXwin ) );
-    service.Register( typeid( manager ), manager );
-    handle = manager;
+  Dali::SingletonService service( SingletonService::Get() );
+  if ( service )
+  {
+    available = service.GetSingleton( typeid( Dali::ImfManager ) );
   }
 
-  return handle;
+  return available;
 }
 
-TypeRegistration IMF_MANAGER_TYPE( typeid(Dali::ImfManager), typeid(Dali::BaseHandle), Create, true /* Create Instance At Startup */ );
-
-} // unnamed namespace
-
 Dali::ImfManager ImfManager::Get()
 {
   Dali::ImfManager manager;
@@ -160,11 +148,33 @@ Dali::ImfManager ImfManager::Get()
   {
     // Check whether the singleton is already created
     Dali::BaseHandle handle = service.GetSingleton( typeid( Dali::ImfManager ) );
-    if(handle)
+    if( handle )
     {
       // If so, downcast the handle
       manager = Dali::ImfManager( dynamic_cast< ImfManager* >( handle.GetObjectPtr() ) );
     }
+    else if ( Adaptor::IsAvailable() )
+    {
+      // Create instance and register singleton only if the adaptor is available
+
+      Adaptor& adaptorImpl( Adaptor::GetImplementation( Adaptor::Get() ) );
+
+      // The Ecore_X_Window needs to use the ImfManager.
+      // Only when the render surface is window, we can get the Ecore_X_Window.
+      Ecore_X_Window ecoreXwin( 0 );
+      Dali::RenderSurface& surface( adaptorImpl.GetSurface() );
+      if( surface.GetType() == Dali::RenderSurface::WINDOW )
+      {
+        ecoreXwin = AnyCast< Ecore_X_Window >( adaptorImpl.GetSurface().GetSurface() );
+      }
+
+      // If we fail to get Ecore_X_Window, we can't use the ImfManager correctly.
+      // Thus you have to call "ecore_imf_context_client_window_set" somewhere.
+      // In EvasPlugIn, this function is called in EvasPlugin::ConnectEcoreEvent().
+
+      manager = Dali::ImfManager( new ImfManager( ecoreXwin ) );
+      service.Register( typeid( manager ), manager );
+    }
   }
 
   return manager;
@@ -313,7 +323,7 @@ bool ImfManager::RestoreAfterFocusLost() const
   return mRestoreAfterFocusLost;
 }
 
-void ImfManager::SetRestoreAferFocusLost( bool toggle )
+void ImfManager::SetRestoreAfterFocusLost( bool toggle )
 {
   mRestoreAfterFocusLost = toggle;
 }