Use another framework in OffscreenApplication 02/295002/2
authorHeeyong Song <heeyong.song@samsung.com>
Thu, 29 Jun 2023 10:05:52 +0000 (19:05 +0900)
committerHeeyong Song <heeyong.song@samsung.com>
Fri, 30 Jun 2023 07:21:12 +0000 (16:21 +0900)
Use glib main loop in OffscreenApplication
In the case, ecore APIs should not be called.

Change-Id: I18b327cce8a8b5973124042207210b40df9707ad

32 files changed:
dali/devel-api/adaptor-framework/offscreen-application.cpp
dali/devel-api/adaptor-framework/offscreen-application.h
dali/internal/adaptor/android/framework-factory-android.cpp
dali/internal/adaptor/android/framework-factory-android.h
dali/internal/adaptor/androidjni/framework-factory-androidjni.cpp
dali/internal/adaptor/androidjni/framework-factory-androidjni.h
dali/internal/adaptor/common/application-impl.cpp
dali/internal/adaptor/common/framework-factory.h
dali/internal/adaptor/file.list
dali/internal/adaptor/glib/framework-factory-glib.cpp
dali/internal/adaptor/glib/framework-factory-glib.h
dali/internal/adaptor/glib/framework-glib.cpp
dali/internal/adaptor/libuv/framework-factory-libuv.cpp
dali/internal/adaptor/libuv/framework-factory-libuv.h
dali/internal/adaptor/macos/framework-factory-mac.h
dali/internal/adaptor/macos/framework-factory-mac.mm
dali/internal/adaptor/tizen-wayland/framework-factory-tizen.cpp
dali/internal/adaptor/tizen-wayland/framework-factory-tizen.h
dali/internal/adaptor/ubuntu/framework-factory-ubuntu.cpp
dali/internal/adaptor/ubuntu/framework-factory-ubuntu.h
dali/internal/adaptor/windows/framework-factory-win.cpp
dali/internal/adaptor/windows/framework-factory-win.h
dali/internal/offscreen/common/offscreen-application-impl.cpp
dali/internal/offscreen/common/offscreen-application-impl.h
dali/internal/system/file.list
dali/internal/system/glib/callback-manager-glib.cpp
dali/internal/system/glib/callback-manager-glib.h
dali/internal/system/linux/callback-manager-ecore.cpp
dali/internal/system/linux/callback-manager-ecore.h
dali/internal/system/linux/system-factory-ecore.cpp
dali/internal/window-system/tizen-wayland/ecore-wl2/window-system-ecore-wl2.cpp
dali/internal/window-system/tizen-wayland/native-render-surface-ecore-wl.cpp

index 30d2c96..0ad6713 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2020 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2023 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -50,14 +50,14 @@ OffscreenApplication& OffscreenApplication::operator=(const OffscreenApplication
 
 OffscreenApplication::~OffscreenApplication() = default;
 
-void OffscreenApplication::Start()
+void OffscreenApplication::MainLoop()
 {
-  Internal::GetImplementation(*this).Start();
+  Internal::GetImplementation(*this).MainLoop();
 }
 
-void OffscreenApplication::Stop()
+void OffscreenApplication::Quit()
 {
-  Internal::GetImplementation(*this).Stop();
+  Internal::GetImplementation(*this).Quit();
 }
 
 Dali::OffscreenWindow OffscreenApplication::GetWindow()
index d03d99b..d7b6249 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_OFFSCREEN_APPLICATION_H
 
 /*
- * Copyright (c) 2020 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2023 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -104,14 +104,14 @@ public:
 
 public:
   /**
-   * @brief Starts the OffscreenApplication (rendering, event handling, etc)
+   * @brief This starts the application.
    */
-  void Start();
+  void MainLoop();
 
   /**
-   * @brief Stops the OffscreenApplication
+   * @brief This quits the application.
    */
-  void Stop();
+  void Quit();
 
   /**
    * @brief Get the default OffscreenWindow handle
index baec498..29acd0b 100644 (file)
@@ -28,14 +28,20 @@ namespace Internal
 {
 namespace Adaptor
 {
-std::unique_ptr<Framework> FrameworkFactoryAndroid::CreateFramework(Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread)
+std::unique_ptr<Framework> FrameworkFactoryAndroid::CreateFramework(FrameworkBackend backend, Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread)
 {
   return Utils::MakeUnique<FrameworkAndroid>(observer, taskObserver, argc, argv, type, useUiThread);
 }
 
-std::unique_ptr<FrameworkFactory> GetFrameworkFactory()
+FrameworkFactory* GetFrameworkFactory()
 {
-  return Utils::MakeUnique<FrameworkFactoryAndroid>();
+  static std::unique_ptr<FrameworkFactory> frameworkFactory = nullptr;
+
+  if(!frameworkFactory)
+  {
+    frameworkFactory = Utils::MakeUnique<FrameworkFactoryAndroid>();
+  }
+  return frameworkFactory.get();
 }
 
 } // namespace Adaptor
index 99b4caa..4b3b9e6 100644 (file)
@@ -29,7 +29,7 @@ namespace Adaptor
 class FrameworkFactoryAndroid : public FrameworkFactory
 {
 public:
-  std::unique_ptr<Framework> CreateFramework(Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) override;
+  std::unique_ptr<Framework> CreateFramework(FrameworkBackend frameworkType, Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) override;
 };
 
 } // namespace Adaptor
index 6573eb5..d4dd93c 100644 (file)
@@ -28,14 +28,20 @@ namespace Internal
 {
 namespace Adaptor
 {
-std::unique_ptr<Framework> FrameworkFactoryAndroidJni::CreateFramework(Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread)
+std::unique_ptr<Framework> FrameworkFactoryAndroidJni::CreateFramework(FrameworkBackend backend, Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread)
 {
   return Utils::MakeUnique<FrameworkAndroidJni>(observer, taskObserver, argc, argv, type, useUiThread);
 }
 
-std::unique_ptr<FrameworkFactory> GetFrameworkFactory()
+FrameworkFactory* GetFrameworkFactory()
 {
-  return Utils::MakeUnique<FrameworkFactoryAndroidJni>();
+  static std::unique_ptr<FrameworkFactory> frameworkFactory = nullptr;
+
+  if(!frameworkFactory)
+  {
+    frameworkFactory = Utils::MakeUnique<FrameworkFactoryAndroidJni>();
+  }
+  return frameworkFactory.get();
 }
 
 } // namespace Adaptor
index a4dac3c..782ed97 100644 (file)
@@ -29,7 +29,7 @@ namespace Adaptor
 class FrameworkFactoryAndroidJni : public FrameworkFactory
 {
 public:
-  std::unique_ptr<Framework> CreateFramework(Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) override;
+  std::unique_ptr<Framework> CreateFramework(FrameworkBackend frameworkType, Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) override;
 };
 
 } // namespace Adaptor
index 602c4f9..3efd7a5 100644 (file)
@@ -126,7 +126,7 @@ Application::Application(int* argc, char** argv[], const std::string& stylesheet
   }
 
   mCommandLineOptions = new CommandLineOptions(argc, argv);
-  mFramework          = Dali::Internal::Adaptor::GetFrameworkFactory()->CreateFramework(*this, *this, argc, argv, applicationType, mUseUiThread);
+  mFramework          = Dali::Internal::Adaptor::GetFrameworkFactory()->CreateFramework(FrameworkBackend::DEFAULT, *this, *this, argc, argv, applicationType, mUseUiThread);
 
   mUseRemoteSurface = (applicationType == Framework::WATCH);
 }
index 8437474..885cdb1 100644 (file)
@@ -27,16 +27,26 @@ namespace Internal
 {
 namespace Adaptor
 {
+enum class FrameworkBackend
+{
+  DEFAULT,
+  GLIB
+};
+
 class FrameworkFactory
 {
 public:
   FrameworkFactory()          = default;
   virtual ~FrameworkFactory() = default;
 
-  virtual std::unique_ptr<Framework> CreateFramework(Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) = 0;
+  virtual std::unique_ptr<Framework> CreateFramework(FrameworkBackend backend, Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) = 0;
+  virtual FrameworkBackend           GetFrameworkBackend() const
+  {
+    return FrameworkBackend::DEFAULT;
+  }
 };
 
-extern std::unique_ptr<FrameworkFactory> GetFrameworkFactory();
+extern FrameworkFactory* GetFrameworkFactory();
 
 } // namespace Adaptor
 } // namespace Internal
index a313acb..95b6f58 100644 (file)
@@ -13,6 +13,7 @@ SET( adaptor_adaptor_common_src_files
 
 # module: adaptor, backend: tizen-wayland
 SET( adaptor_adaptor_tizen_wayland_src_files
+    ${adaptor_adaptor_dir}/glib/framework-glib.cpp
     ${adaptor_adaptor_dir}/tizen-wayland/adaptor-impl-tizen.cpp
     ${adaptor_adaptor_dir}/tizen-wayland/framework-factory-tizen.cpp
     ${adaptor_adaptor_dir}/tizen-wayland/framework-tizen.cpp
@@ -41,6 +42,7 @@ SET( adaptor_adaptor_tizen_wearable_src_files
 # module: adaptor, backend: ubuntu
 SET( adaptor_adaptor_ubuntu_src_files
     ${adaptor_adaptor_dir}/generic/adaptor-impl-generic.cpp
+    ${adaptor_adaptor_dir}/glib/framework-glib.cpp
     ${adaptor_adaptor_dir}/ubuntu/framework-factory-ubuntu.cpp
     ${adaptor_adaptor_dir}/ubuntu/framework-ubuntu.cpp
 )
index 50e1704..baf5954 100644 (file)
@@ -28,14 +28,20 @@ namespace Internal
 {
 namespace Adaptor
 {
-std::unique_ptr<Framework> FrameworkFactoryGlib::CreateFramework(Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread)
+std::unique_ptr<Framework> FrameworkFactoryGlib::CreateFramework(FrameworkBackend backend, Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread)
 {
   return Utils::MakeUnique<FrameworkGlib>(observer, taskObserver, argc, argv, type, useUiThread);
 }
 
-std::unique_ptr<FrameworkFactory> GetFrameworkFactory()
+FrameworkFactory* GetFrameworkFactory()
 {
-  return Utils::MakeUnique<FrameworkFactoryGlib>();
+  static std::unique_ptr<FrameworkFactory> frameworkFactory = nullptr;
+
+  if(!frameworkFactory)
+  {
+    frameworkFactory = Utils::MakeUnique<FrameworkFactoryGlib>();
+  }
+  return frameworkFactory.get();
 }
 
 } // namespace Adaptor
index eef7081..5969b3b 100644 (file)
@@ -29,7 +29,7 @@ namespace Adaptor
 class FrameworkFactoryGlib : public FrameworkFactory
 {
 public:
-  std::unique_ptr<Framework> CreateFramework(Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) override;
+  std::unique_ptr<Framework> CreateFramework(FrameworkBackend frameworkType, Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) override;
 };
 
 } // namespace Adaptor
index 90859dc..5123131 100644 (file)
@@ -47,8 +47,8 @@ struct FrameworkGlib::Impl
   // Constructor
   Impl(void* data)
   {
-    // In future, may need to change this to have own context or use Tizen context
-    gMainLoop = mMainLoop = g_main_loop_new(nullptr, false);
+    GMainContext* context = g_main_context_new();
+    gMainLoop = mMainLoop = g_main_loop_new(context, false);
   }
 
   ~Impl()
index d3cb580..b608d45 100644 (file)
@@ -28,14 +28,20 @@ namespace Internal
 {
 namespace Adaptor
 {
-std::unique_ptr<Framework> FrameworkFactoryLibuv::CreateFramework(Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread)
+std::unique_ptr<Framework> FrameworkFactoryLibuv::CreateFramework(FrameworkBackend backend, Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread)
 {
   return Utils::MakeUnique<FrameworkLibuv>(observer, taskObserver, argc, argv, type, useUiThread);
 }
 
-std::unique_ptr<FrameworkFactory> GetFrameworkFactory()
+FrameworkFactory* GetFrameworkFactory()
 {
-  return Utils::MakeUnique<FrameworkFactoryLibuv>();
+  static std::unique_ptr<FrameworkFactory> frameworkFactory = nullptr;
+
+  if(!frameworkFactory)
+  {
+    frameworkFactory = Utils::MakeUnique<FrameworkFactoryLibuv>();
+  }
+  return frameworkFactory.get();
 }
 
 } // namespace Adaptor
index 1b5a4ba..2b4d0ae 100644 (file)
@@ -29,7 +29,7 @@ namespace Adaptor
 class FrameworkFactoryLibuv : public FrameworkFactory
 {
 public:
-  std::unique_ptr<Framework> CreateFramework(Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) override;
+  std::unique_ptr<Framework> CreateFramework(FrameworkBackend frameworkType, Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) override;
 };
 
 } // namespace Adaptor
index 4710077..1778d70 100644 (file)
@@ -29,7 +29,7 @@ namespace Adaptor
 class FrameworkFactoryMac : public FrameworkFactory
 {
 public:
-  std::unique_ptr<Framework> CreateFramework(Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) override;
+  std::unique_ptr<Framework> CreateFramework(FrameworkBackend frameworkType, Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) override;
 };
 
 } // namespace Adaptor
index 9de706e..8deb80e 100644 (file)
@@ -28,14 +28,20 @@ namespace Internal
 {
 namespace Adaptor
 {
-std::unique_ptr<Framework> FrameworkFactoryMac::CreateFramework(Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread)
+std::unique_ptr<Framework> FrameworkFactoryMac::CreateFramework(FrameworkBackend backend, Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread)
 {
   return Utils::MakeUnique<FrameworkMac>(observer, taskObserver, argc, argv, type, useUiThread);
 }
 
-std::unique_ptr<FrameworkFactory> GetFrameworkFactory()
+FrameworkFactory* GetFrameworkFactory()
 {
-  return Utils::MakeUnique<FrameworkFactoryMac>();
+  static std::unique_ptr<FrameworkFactory> frameworkFactory = nullptr;
+
+  if(!frameworkFactory)
+  {
+    frameworkFactory = Utils::MakeUnique<FrameworkFactoryMac>();
+  }
+  return frameworkFactory.get();
 }
 
 } // namespace Adaptor
index 75872a6..d466db1 100644 (file)
@@ -19,6 +19,7 @@
 #include <dali/internal/adaptor/tizen-wayland/framework-factory-tizen.h>
 
 // INTERNAL HEADERS
+#include <dali/internal/adaptor/glib/framework-glib.h>
 #include <dali/internal/adaptor/tizen-wayland/framework-tizen.h>
 #include <dali/internal/window-system/common/display-utils.h>
 
@@ -28,14 +29,28 @@ namespace Internal
 {
 namespace Adaptor
 {
-std::unique_ptr<Framework> FrameworkFactoryTizen::CreateFramework(Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread)
+std::unique_ptr<Framework> FrameworkFactoryTizen::CreateFramework(FrameworkBackend backend, Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread)
 {
-  return Utils::MakeUnique<FrameworkTizen>(observer, taskObserver, argc, argv, type, useUiThread);
+  mBackend = backend;
+  if(mBackend == FrameworkBackend::GLIB)
+  {
+    return Utils::MakeUnique<FrameworkGlib>(observer, taskObserver, argc, argv, type, useUiThread);
+  }
+  else
+  {
+    return Utils::MakeUnique<FrameworkTizen>(observer, taskObserver, argc, argv, type, useUiThread);
+  }
 }
 
-std::unique_ptr<FrameworkFactory> GetFrameworkFactory()
+FrameworkFactory* GetFrameworkFactory()
 {
-  return Utils::MakeUnique<FrameworkFactoryTizen>();
+  static std::unique_ptr<FrameworkFactory> frameworkFactory = nullptr;
+
+  if(!frameworkFactory)
+  {
+    frameworkFactory = Utils::MakeUnique<FrameworkFactoryTizen>();
+  }
+  return frameworkFactory.get();
 }
 
 } // namespace Adaptor
index d56db17..68879fb 100644 (file)
@@ -29,7 +29,15 @@ namespace Adaptor
 class FrameworkFactoryTizen : public FrameworkFactory
 {
 public:
-  std::unique_ptr<Framework> CreateFramework(Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) override;
+  std::unique_ptr<Framework> CreateFramework(FrameworkBackend frameworkType, Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) override;
+
+  FrameworkBackend GetFrameworkBackend() const override
+  {
+    return mBackend;
+  }
+
+private:
+  FrameworkBackend mBackend;
 };
 
 } // namespace Adaptor
index f8bcc62..ae2c084 100644 (file)
@@ -28,14 +28,20 @@ namespace Internal
 {
 namespace Adaptor
 {
-std::unique_ptr<Framework> FrameworkFactoryUbuntu::CreateFramework(Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread)
+std::unique_ptr<Framework> FrameworkFactoryUbuntu::CreateFramework(FrameworkBackend backend, Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread)
 {
   return Utils::MakeUnique<FrameworkUbuntu>(observer, taskObserver, argc, argv, type, useUiThread);
 }
 
-std::unique_ptr<FrameworkFactory> GetFrameworkFactory()
+FrameworkFactory* GetFrameworkFactory()
 {
-  return Utils::MakeUnique<FrameworkFactoryUbuntu>();
+  static std::unique_ptr<FrameworkFactory> frameworkFactory = nullptr;
+
+  if(!frameworkFactory)
+  {
+    frameworkFactory = Utils::MakeUnique<FrameworkFactoryUbuntu>();
+  }
+  return frameworkFactory.get();
 }
 
 } // namespace Adaptor
index c765922..f7d6b2a 100644 (file)
@@ -29,7 +29,7 @@ namespace Adaptor
 class FrameworkFactoryUbuntu : public FrameworkFactory
 {
 public:
-  std::unique_ptr<Framework> CreateFramework(Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) override;
+  std::unique_ptr<Framework> CreateFramework(FrameworkBackend frameworkType, Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) override;
 };
 
 } // namespace Adaptor
index 6d45a3e..e94a561 100644 (file)
@@ -28,14 +28,20 @@ namespace Internal
 {
 namespace Adaptor
 {
-std::unique_ptr<Framework> FrameworkFactoryWin::CreateFramework(Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread)
+std::unique_ptr<Framework> FrameworkFactoryWin::CreateFramework(FrameworkBackend backend, Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread)
 {
   return Utils::MakeUnique<FrameworkWin>(observer, taskObserver, argc, argv, type, useUiThread);
 }
 
-std::unique_ptr<FrameworkFactory> GetFrameworkFactory()
+FrameworkFactory* GetFrameworkFactory()
 {
-  return Utils::MakeUnique<FrameworkFactoryWin>();
+  static std::unique_ptr<FrameworkFactory> frameworkFactory = nullptr;
+
+  if(!frameworkFactory)
+  {
+    frameworkFactory = Utils::MakeUnique<FrameworkFactoryWin>();
+  }
+  return frameworkFactory.get();
 }
 
 } // namespace Adaptor
index 1fe335a..039e3fa 100644 (file)
@@ -29,7 +29,7 @@ namespace Adaptor
 class FrameworkFactoryWin : public FrameworkFactory
 {
 public:
-  std::unique_ptr<Framework> CreateFramework(Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) override;
+  std::unique_ptr<Framework> CreateFramework(FrameworkBackend frameworkType, Framework::Observer& observer, Framework::TaskObserver& taskObserver, int* argc, char*** argv, Framework::Type type, bool useUiThread) override;
 };
 
 } // namespace Adaptor
index 6e6ee05..394b637 100644 (file)
 #include <dali/internal/offscreen/common/offscreen-application-impl.h>
 
 // INTERNAL INCLUDES
+#include <dali/devel-api/adaptor-framework/accessibility-bridge.h>
 #include <dali/devel-api/adaptor-framework/environment-variable.h>
 #include <dali/integration-api/adaptor-framework/adaptor.h>
 #include <dali/integration-api/adaptor-framework/native-render-surface.h>
 #include <dali/internal/adaptor/common/adaptor-impl.h>
+#include <dali/internal/adaptor/common/framework-factory.h>
 #include <dali/internal/adaptor/common/thread-controller-interface.h>
 #include <dali/internal/offscreen/common/offscreen-window-impl.h>
 #include <dali/internal/system/common/environment-variables.h>
@@ -45,7 +47,11 @@ OffscreenApplication::OffscreenApplication(uint16_t width, uint16_t height, Dali
   // Disable partial update
   EnvironmentVariable::SetEnvironmentVariable(DALI_ENV_DISABLE_PARTIAL_UPDATE, "1");
 
-  Dali::Internal::Adaptor::WindowSystem::Initialize();
+  // Disable ATSPI
+  Dali::Accessibility::Bridge::DisableAutoInit();
+
+  // Now we assume separated main loop for the offscreen application
+  mFramework = Internal::Adaptor::GetFrameworkFactory()->CreateFramework(Internal::Adaptor::FrameworkBackend::GLIB, *this, *this, nullptr, nullptr, Adaptor::Framework::NORMAL, false);
 
   // Generate a default window
   IntrusivePtr<Internal::OffscreenWindow> impl = Internal::OffscreenWindow::New(width, height, surface, isTranslucent);
@@ -59,36 +65,56 @@ OffscreenApplication::OffscreenApplication(uint16_t width, uint16_t height, Dali
 
 OffscreenApplication::~OffscreenApplication()
 {
-  Dali::Internal::Adaptor::WindowSystem::Shutdown();
 }
 
-void OffscreenApplication::Start()
+void OffscreenApplication::MainLoop()
+{
+  mFramework->Run();
+}
+
+void OffscreenApplication::Quit()
+{
+  // Actually quit the application.
+  // Force a call to Quit even if adaptor is not running.
+  Internal::Adaptor::Adaptor::GetImplementation(*mAdaptor).AddIdle(MakeCallback(this, &OffscreenApplication::QuitFromMainLoop), false, true);
+}
+
+Dali::OffscreenWindow OffscreenApplication::GetWindow()
+{
+  return mDefaultWindow;
+}
+
+void OffscreenApplication::RenderOnce()
+{
+  mAdaptor->RenderOnce();
+}
+
+void OffscreenApplication::OnInit()
 {
   // Start the adaptor
   mAdaptor->Start();
 
-  Dali::OffscreenApplication handle(this);
   mInitSignal.Emit();
+
   mAdaptor->NotifySceneCreated();
 }
 
-void OffscreenApplication::Stop()
+void OffscreenApplication::OnTerminate()
 {
+  mTerminateSignal.Emit();
+
   // Stop the adaptor
   mAdaptor->Stop();
 
-  Dali::OffscreenApplication handle(this);
-  mTerminateSignal.Emit();
+  mDefaultWindow.Reset();
 }
 
-Dali::OffscreenWindow OffscreenApplication::GetWindow()
+void OffscreenApplication::QuitFromMainLoop()
 {
-  return mDefaultWindow;
-}
+  mAdaptor->Stop();
 
-void OffscreenApplication::RenderOnce()
-{
-  mAdaptor->RenderOnce();
+  mFramework->Quit();
+  // This will trigger OnTerminate(), below, after the main loop has completed.
 }
 
 } // namespace Internal
index 6a868ca..48dc0e3 100644 (file)
@@ -27,6 +27,7 @@
 #include <dali/devel-api/adaptor-framework/offscreen-application.h>
 #include <dali/devel-api/adaptor-framework/offscreen-window.h>
 #include <dali/integration-api/adaptor-framework/scene-holder-impl.h>
+#include <dali/internal/adaptor/common/framework.h>
 
 namespace Dali
 {
@@ -37,7 +38,7 @@ namespace Internal
 /**
  * Implementation of the OffscreenApplication class.
  */
-class OffscreenApplication : public BaseObject
+class OffscreenApplication : public BaseObject, public Adaptor::Framework::Observer, public Adaptor::Framework::TaskObserver
 {
 public:
   using OffscreenApplicationSignalType = Dali::OffscreenApplication::OffscreenApplicationSignalType;
@@ -59,14 +60,14 @@ public:
   virtual ~OffscreenApplication();
 
   /**
-   * @copydoc Dali::OffscreenApplication::Start()
+   * @copydoc Dali::OffscreenApplication::MainLoop()
    */
-  void Start();
+  void MainLoop();
 
   /**
-   * @copydoc Dali::OffscreenApplication::Stop()
+   * @copydoc Dali::OffscreenApplication::Quit()
    */
-  void Stop();
+  void Quit();
 
   /**
    * @copydoc Dali::OffscreenApplication::GetDefaultWindow()
@@ -95,6 +96,17 @@ public: // Signals
     return mTerminateSignal;
   }
 
+public: // From Framework::Observer
+  /**
+   * Called when the framework is initialised.
+   */
+  void OnInit() override;
+
+  /**
+   * Called when the framework is terminated.
+   */
+  void OnTerminate() override;
+
 private:
   /**
    * Private constructor
@@ -106,6 +118,11 @@ private:
    */
   OffscreenApplication(uint16_t width, uint16_t height, Dali::Any surface, bool isTranslucent, Dali::OffscreenApplication::RenderMode renderMode);
 
+  /**
+   * Quits from the main loop
+   */
+  void QuitFromMainLoop();
+
   // Undefined
   OffscreenApplication(const OffscreenApplication&) = delete;
   OffscreenApplication& operator=(OffscreenApplication&) = delete;
@@ -116,6 +133,8 @@ private:
   std::unique_ptr<Dali::Adaptor> mAdaptor;
   Dali::OffscreenWindow          mDefaultWindow;
 
+  std::unique_ptr<Internal::Adaptor::Framework> mFramework;
+
   OffscreenApplicationSignalType mInitSignal;
   OffscreenApplicationSignalType mTerminateSignal;
 };
index a8f439a..898d703 100644 (file)
@@ -31,10 +31,13 @@ SET( adaptor_system_linux_src_files
     ${adaptor_system_dir}/common/shared-file.cpp
     ${adaptor_system_dir}/common/trigger-event.cpp
     ${adaptor_system_dir}/common/trigger-event-factory.cpp
+    ${adaptor_system_dir}/common/time-service.cpp
+    ${adaptor_system_dir}/generic/shared-file-operations-generic.cpp
+    ${adaptor_system_dir}/glib/callback-manager-glib.cpp
+    ${adaptor_system_dir}/glib/file-descriptor-monitor-glib.cpp
+    ${adaptor_system_dir}/glib/timer-impl-glib.cpp
     ${adaptor_system_dir}/linux/callback-manager-ecore.cpp
     ${adaptor_system_dir}/linux/file-descriptor-monitor-ecore.cpp
-    ${adaptor_system_dir}/generic/shared-file-operations-generic.cpp
-    ${adaptor_system_dir}/common/time-service.cpp
     ${adaptor_system_dir}/linux/system-factory-ecore.cpp
     ${adaptor_system_dir}/linux/timer-impl-ecore.cpp
 )
index 4b25bd3..1dcb589 100644 (file)
@@ -35,14 +35,14 @@ extern GMainContext* GetMainLoopContext();
 /**
  * Structure contains the callback function and control options
  */
-struct CallbackData
+struct GlibCallbackData
 {
   typedef gboolean (*CallbackFunction)(gpointer userData);
 
   /**
    * Constructor
    */
-  CallbackData(CallbackBase* callback, bool hasReturnValue)
+  GlibCallbackData(CallbackBase* callback, bool hasReturnValue)
   : mCallback(callback),
     mHasReturnValue(hasReturnValue)
   {
@@ -58,7 +58,7 @@ struct CallbackData
     {
       mSource = g_idle_source_new();
       g_source_set_priority(mSource, G_PRIORITY_HIGH_IDLE);
-      g_source_set_callback(mSource, &CallbackData::IdleCallback, this, nullptr); // No destroyNotify
+      g_source_set_callback(mSource, &GlibCallbackData::IdleCallback, this, nullptr); // No destroyNotify
       g_source_attach(mSource, context);
     }
   }
@@ -66,7 +66,7 @@ struct CallbackData
   /**
    * Destructor
    */
-  ~CallbackData()
+  ~GlibCallbackData()
   {
     g_source_destroy(mSource);
     g_source_unref(mSource);
@@ -78,8 +78,8 @@ struct CallbackData
 
   static gboolean IdleCallback(gpointer userData)
   {
-    gboolean      retValue     = G_SOURCE_REMOVE;
-    CallbackData* callbackData = static_cast<CallbackData*>(userData);
+    gboolean          retValue     = G_SOURCE_REMOVE;
+    GlibCallbackData* callbackData = static_cast<GlibCallbackData*>(userData);
 
     if(callbackData->mHasReturnValue)
     {
@@ -139,7 +139,7 @@ void GlibCallbackManager::Stop()
 
   for(CallbackList::iterator iter = mCallbackContainer.begin(); iter != mCallbackContainer.end(); ++iter)
   {
-    CallbackData* data = (*iter);
+    GlibCallbackData* data = (*iter);
 
     delete data;
   }
@@ -153,7 +153,7 @@ bool GlibCallbackManager::AddIdleCallback(CallbackBase* callback, bool hasReturn
     return false;
   }
 
-  CallbackData* callbackData = new CallbackData(callback, hasReturnValue);
+  GlibCallbackData* callbackData = new GlibCallbackData(callback, hasReturnValue);
 
   // To inform the manager a callback has finished, we get it to call RemoveCallbackFromContainer
   callbackData->mRemoveFromContainerFunction = MakeCallback(this, &GlibCallbackManager::RemoveCallbackFromContainer);
@@ -174,7 +174,7 @@ void GlibCallbackManager::RemoveIdleCallback(CallbackBase* callback)
       it != endIt;
       ++it)
   {
-    CallbackData* data = *it;
+    GlibCallbackData* data = *it;
 
     if(data->mCallback == callback)
     {
@@ -204,7 +204,7 @@ bool GlibCallbackManager::AddIdleEntererCallback(CallbackBase* callback)
     return false;
   }
 
-  CallbackData* callbackData = new CallbackData(callback, true);
+  GlibCallbackData* callbackData = new GlibCallbackData(callback, true);
 
   // To inform the manager a callback has finished, we get it to call RemoveCallbackFromContainer
   callbackData->mRemoveFromContainerFunction = MakeCallback(this, &GlibCallbackManager::RemoveCallbackFromContainer);
@@ -223,7 +223,7 @@ void GlibCallbackManager::RemoveIdleEntererCallback(CallbackBase* callback)
   RemoveIdleCallback(callback);
 }
 
-void GlibCallbackManager::RemoveCallbackFromContainer(CallbackData* callbackData)
+void GlibCallbackManager::RemoveCallbackFromContainer(GlibCallbackData* callbackData)
 {
   mCallbackContainer.remove(callbackData);
 }
index fb3a2c0..4d0c865 100644 (file)
@@ -30,7 +30,7 @@ namespace Internal
 {
 namespace Adaptor
 {
-struct CallbackData;
+struct GlibCallbackData;
 
 /**
  * @brief Glib callback manager used to install call backs in the applications main loop.
@@ -95,14 +95,14 @@ private:
    * Always called from main thread
    * @param callbackData callback data
    */
-  void RemoveCallbackFromContainer(CallbackData* callbackData);
+  void RemoveCallbackFromContainer(GlibCallbackData* callbackData);
 
   // Undefined
   GlibCallbackManager(const GlibCallbackManager&) = delete;
   GlibCallbackManager& operator=(GlibCallbackManager&) = delete;
 
 private:
-  typedef std::list<CallbackData*> CallbackList; ///< list of callbacks installed
+  typedef std::list<GlibCallbackData*> CallbackList; ///< list of callbacks installed
 
   bool         mRunning;           ///< flag is set to true if when running
   CallbackList mCallbackContainer; ///< container of live callbacks
index e7ea2d5..367b186 100644 (file)
@@ -34,12 +34,12 @@ namespace Adaptor
 /**
  * Structure contains the callback function and control options
  */
-struct CallbackData
+struct EcoreCallbackData
 {
   /**
    * Constructor
    */
-  CallbackData(CallbackBase* callback, bool hasReturnValue)
+  EcoreCallbackData(CallbackBase* callback, bool hasReturnValue)
   : mCallback(callback),
     mRemoveFromContainerFunction(NULL),
     mIdler(NULL),
@@ -50,7 +50,7 @@ struct CallbackData
   /**
    * Destructor
    */
-  ~CallbackData()
+  ~EcoreCallbackData()
   {
     delete mCallback;
     delete mRemoveFromContainerFunction;
@@ -70,8 +70,8 @@ namespace
  */
 Eina_Bool IdleCallback(void* data)
 {
-  Eina_Bool     ret          = ECORE_CALLBACK_CANCEL; // CALLBACK Cancel will delete the idler so we don't need to call ecore_idler_del
-  CallbackData* callbackData = static_cast<CallbackData*>(data);
+  Eina_Bool          ret          = ECORE_CALLBACK_CANCEL; // CALLBACK Cancel will delete the idler so we don't need to call ecore_idler_del
+  EcoreCallbackData* callbackData = static_cast<EcoreCallbackData*>(data);
 
   if(callbackData->mHasReturnValue)
   {
@@ -137,7 +137,7 @@ bool EcoreCallbackManager::AddIdleCallback(CallbackBase* callback, bool hasRetur
     return false;
   }
 
-  CallbackData* callbackData = new CallbackData(callback, hasReturnValue);
+  EcoreCallbackData* callbackData = new EcoreCallbackData(callback, hasReturnValue);
 
   callbackData->mRemoveFromContainerFunction = MakeCallback(this, &EcoreCallbackManager::RemoveCallbackFromContainer);
 
@@ -159,7 +159,7 @@ void EcoreCallbackManager::RemoveIdleCallback(CallbackBase* callback)
       it != endIt;
       ++it)
   {
-    CallbackData* data = *it;
+    EcoreCallbackData* data = *it;
 
     if(data->mCallback == callback)
     {
@@ -194,7 +194,7 @@ bool EcoreCallbackManager::AddIdleEntererCallback(CallbackBase* callback)
     return false;
   }
 
-  CallbackData* callbackData = new CallbackData(callback, true);
+  EcoreCallbackData* callbackData = new EcoreCallbackData(callback, true);
 
   callbackData->mRemoveFromContainerFunction = MakeCallback(this, &EcoreCallbackManager::RemoveCallbackFromContainer);
 
@@ -216,7 +216,7 @@ void EcoreCallbackManager::RemoveIdleEntererCallback(CallbackBase* callback)
       it != endIt;
       ++it)
   {
-    CallbackData* data = *it;
+    EcoreCallbackData* data = *it;
 
     if(data->mCallback == callback)
     {
@@ -233,7 +233,7 @@ void EcoreCallbackManager::RemoveIdleEntererCallback(CallbackBase* callback)
   }
 }
 
-void EcoreCallbackManager::RemoveCallbackFromContainer(CallbackData* callbackData)
+void EcoreCallbackManager::RemoveCallbackFromContainer(EcoreCallbackData* callbackData)
 {
   mCallbackContainer.remove(callbackData);
 }
@@ -243,7 +243,7 @@ void EcoreCallbackManager::RemoveAllCallbacks()
   // always called from main thread
   for(CallbackList::iterator iter = mCallbackContainer.begin(); iter != mCallbackContainer.end(); ++iter)
   {
-    CallbackData* data = (*iter);
+    EcoreCallbackData* data = (*iter);
 
     if(data->mIdler)
     {
index 214e153..c756f51 100644 (file)
@@ -30,7 +30,7 @@ namespace Internal
 {
 namespace Adaptor
 {
-struct CallbackData;
+struct EcoreCallbackData;
 
 /**
  * Ecore interface to install call backs in the applications main loop.
@@ -103,21 +103,21 @@ private:
    * Always called from main thread
    * @param callbackData callback data
    */
-  void RemoveCallbackFromContainer(CallbackData* callbackData);
+  void RemoveCallbackFromContainer(EcoreCallbackData* callbackData);
 
   /**
    * @brief Remove a standard call back from ecore
    * Always called from main thread
    * @param callbackData callback data
    */
-  void RemoveStandardCallback(CallbackData* callbackData);
+  void RemoveStandardCallback(EcoreCallbackData* callbackData);
 
   // Undefined
   EcoreCallbackManager(const EcoreCallbackManager&) = delete;
   EcoreCallbackManager& operator=(EcoreCallbackManager&) = delete;
 
 private:
-  typedef std::list<CallbackData*> CallbackList;
+  typedef std::list<EcoreCallbackData*> CallbackList;
 
   bool         mRunning;           ///< flag is set to true if when running
   CallbackList mCallbackContainer; ///< container of live idle callbacks
index 9308f64..8a4b40b 100644 (file)
 #include <dali/internal/system/linux/system-factory-ecore.h>
 
 // INTERNAL HEADERS
+#include <dali/internal/adaptor/common/framework-factory.h>
+#include <dali/internal/system/glib/callback-manager-glib.h>
+#include <dali/internal/system/glib/file-descriptor-monitor-glib.h>
+#include <dali/internal/system/glib/timer-impl-glib.h>
 #include <dali/internal/system/linux/callback-manager-ecore.h>
 #include <dali/internal/system/linux/file-descriptor-monitor-ecore.h>
 #include <dali/internal/system/linux/timer-impl-ecore.h>
@@ -31,17 +35,41 @@ namespace Adaptor
 {
 std::unique_ptr<CallbackManager> SystemFactoryEcore::CreateCallbackManager()
 {
-  return Utils::MakeUnique<EcoreCallbackManager>();
+  auto backend = Dali::Internal::Adaptor::GetFrameworkFactory()->GetFrameworkBackend();
+  if(backend == FrameworkBackend::GLIB)
+  {
+    return Utils::MakeUnique<GlibCallbackManager>();
+  }
+  else
+  {
+    return Utils::MakeUnique<EcoreCallbackManager>();
+  }
 }
 
 std::unique_ptr<FileDescriptorMonitor> SystemFactoryEcore::CreateFileDescriptorMonitor(int fileDescriptor, CallbackBase* callback, int eventBitmask)
 {
-  return Utils::MakeUnique<FileDescriptorMonitorEcore>(fileDescriptor, callback, eventBitmask);
+  auto backend = Dali::Internal::Adaptor::GetFrameworkFactory()->GetFrameworkBackend();
+  if(backend == FrameworkBackend::GLIB)
+  {
+    return Utils::MakeUnique<FileDescriptorMonitorGlib>(fileDescriptor, callback, eventBitmask);
+  }
+  else
+  {
+    return Utils::MakeUnique<FileDescriptorMonitorEcore>(fileDescriptor, callback, eventBitmask);
+  }
 }
 
 TimerPtr SystemFactoryEcore::CreateTimer(uint32_t milliSec)
 {
-  return TimerEcore::New(milliSec);
+  auto backend = Dali::Internal::Adaptor::GetFrameworkFactory()->GetFrameworkBackend();
+  if(backend == FrameworkBackend::GLIB)
+  {
+    return TimerGlib::New(milliSec);
+  }
+  else
+  {
+    return TimerEcore::New(milliSec);
+  }
 }
 
 std::unique_ptr<SystemFactory> GetSystemFactory()
index 4b3eb66..21a7fc5 100644 (file)
  *
  */
 
+// EXTERNAL_HEADERS
+#include <Ecore_Wl2.h>
+#include <dali/integration-api/debug.h>
+
 // INTERNAL HEADERS
 #include <dali/devel-api/adaptor-framework/keyboard.h>
+#include <dali/internal/adaptor/common/framework-factory.h>
 #include <dali/internal/system/common/time-service.h>
 #include <dali/internal/window-system/common/window-system.h>
 
-// EXTERNAL_HEADERS
-#include <Ecore_Wl2.h>
-#include <dali/integration-api/debug.h>
-
 #define START_DURATION_CHECK()                               \
   uint32_t durationMilliSeconds = static_cast<uint32_t>(-1); \
   uint32_t startTime, endTime;                               \
@@ -53,27 +54,39 @@ static int32_t gScreenHeight = 0;
 
 void Initialize()
 {
-  ecore_wl2_init();
+  auto backend = Dali::Internal::Adaptor::GetFrameworkFactory()->GetFrameworkBackend();
+  if(backend == FrameworkBackend::DEFAULT)
+  {
+    ecore_wl2_init();
+  }
 }
 
 void Shutdown()
 {
-  ecore_wl2_shutdown();
+  auto backend = Dali::Internal::Adaptor::GetFrameworkFactory()->GetFrameworkBackend();
+  if(backend == FrameworkBackend::DEFAULT)
+  {
+    ecore_wl2_shutdown();
+  }
 }
 
 void GetScreenSize(int32_t& width, int32_t& height)
 {
-  if(gScreenWidth == 0 || gScreenHeight == 0)
+  auto backend = Dali::Internal::Adaptor::GetFrameworkFactory()->GetFrameworkBackend();
+  if(backend == FrameworkBackend::DEFAULT)
   {
-    Ecore_Wl2_Display* display = ecore_wl2_display_connect(NULL);
-    if(display)
+    if(gScreenWidth == 0 || gScreenHeight == 0)
     {
-      START_DURATION_CHECK();
-      ecore_wl2_display_screen_size_get(display, &gScreenWidth, &gScreenHeight);
-      FINISH_DURATION_CHECK("ecore_wl2_display_screen_size_get");
-
-      DALI_ASSERT_ALWAYS((gScreenWidth > 0) && "screen width is 0");
-      DALI_ASSERT_ALWAYS((gScreenHeight > 0) && "screen height is 0");
+      Ecore_Wl2_Display* display = ecore_wl2_display_connect(NULL);
+      if(display)
+      {
+        START_DURATION_CHECK();
+        ecore_wl2_display_screen_size_get(display, &gScreenWidth, &gScreenHeight);
+        FINISH_DURATION_CHECK("ecore_wl2_display_screen_size_get");
+
+        DALI_ASSERT_ALWAYS((gScreenWidth > 0) && "screen width is 0");
+        DALI_ASSERT_ALWAYS((gScreenHeight > 0) && "screen height is 0");
+      }
     }
   }
   width  = gScreenWidth;
@@ -82,30 +95,43 @@ void GetScreenSize(int32_t& width, int32_t& height)
 
 void UpdateScreenSize()
 {
-  Ecore_Wl2_Display* display = ecore_wl2_display_connect(NULL);
-  if(display)
+  auto backend = Dali::Internal::Adaptor::GetFrameworkFactory()->GetFrameworkBackend();
+  if(backend == FrameworkBackend::DEFAULT)
   {
-    START_DURATION_CHECK();
-    ecore_wl2_display_screen_size_get(display, &gScreenWidth, &gScreenHeight);
-    FINISH_DURATION_CHECK("ecore_wl2_display_screen_size_get");
+    Ecore_Wl2_Display* display = ecore_wl2_display_connect(NULL);
+    if(display)
+    {
+      START_DURATION_CHECK();
+      ecore_wl2_display_screen_size_get(display, &gScreenWidth, &gScreenHeight);
+      FINISH_DURATION_CHECK("ecore_wl2_display_screen_size_get");
+    }
   }
 }
 
 bool SetKeyboardRepeatInfo(float rate, float delay)
 {
-  Ecore_Wl2_Input* input = ecore_wl2_input_default_input_get(ecore_wl2_connected_display_get(NULL));
-  return ecore_wl2_input_keyboard_repeat_set(input, static_cast<double>(rate), static_cast<double>(delay));
+  auto backend = Dali::Internal::Adaptor::GetFrameworkFactory()->GetFrameworkBackend();
+  if(backend == FrameworkBackend::DEFAULT)
+  {
+    Ecore_Wl2_Input* input = ecore_wl2_input_default_input_get(ecore_wl2_connected_display_get(NULL));
+    return ecore_wl2_input_keyboard_repeat_set(input, static_cast<double>(rate), static_cast<double>(delay));
+  }
 }
 
 bool GetKeyboardRepeatInfo(float& rate, float& delay)
 {
-  Ecore_Wl2_Input* input = ecore_wl2_input_default_input_get(ecore_wl2_connected_display_get(NULL));
-  double           rateVal, delayVal;
-  bool             ret = ecore_wl2_input_keyboard_repeat_get(input, &rateVal, &delayVal);
-  rate                 = static_cast<float>(rateVal);
-  delay                = static_cast<float>(delayVal);
+  auto backend = Dali::Internal::Adaptor::GetFrameworkFactory()->GetFrameworkBackend();
+  if(backend == FrameworkBackend::DEFAULT)
+  {
+    Ecore_Wl2_Input* input = ecore_wl2_input_default_input_get(ecore_wl2_connected_display_get(NULL));
+    double           rateVal, delayVal;
+    bool             ret = ecore_wl2_input_keyboard_repeat_get(input, &rateVal, &delayVal);
+    rate                 = static_cast<float>(rateVal);
+    delay                = static_cast<float>(delayVal);
 
-  return ret;
+    return ret;
+  }
+  return false;
 }
 
 } // namespace WindowSystem
index 18a5a59..1d8a871 100644 (file)
 #include <dali/integration-api/debug.h>
 #include <dali/integration-api/gl-abstraction.h>
 
-#ifdef ECORE_WAYLAND2
-#include <Ecore_Wl2.h>
-#else
-#include <Ecore_Wayland.h>
-#endif
-
 #include <tbm_bufmgr.h>
 #include <tbm_surface_internal.h>
 
@@ -150,14 +144,8 @@ void NativeRenderSurfaceEcoreWl::GetDpi(unsigned int& dpiHorizontal, unsigned in
   float xres, yres;
 
   // 1 inch = 25.4 millimeters
-#ifdef ECORE_WAYLAND2
-  // TODO: Application should set dpi value in wayland2
   xres = 96;
   yres = 96;
-#else
-  xres = ecore_wl_dpi_get();
-  yres = ecore_wl_dpi_get();
-#endif
 
   dpiHorizontal = int(xres + 0.5f); // rounding
   dpiVertical   = int(yres + 0.5f);