[Tizen] Add GetFrameworkContext to OffscreenApplication 78/295578/1
authorHeeyong Song <heeyong.song@samsung.com>
Mon, 10 Jul 2023 05:09:28 +0000 (14:09 +0900)
committerHeeyong Song <heeyong.song@samsung.com>
Tue, 11 Jul 2023 05:53:38 +0000 (14:53 +0900)
Change-Id: I9160d0777525f2a4aa854fcf8cb63202c1efe347

dali/devel-api/adaptor-framework/offscreen-application.cpp
dali/devel-api/adaptor-framework/offscreen-application.h
dali/internal/adaptor/common/framework.cpp
dali/internal/adaptor/common/framework.h
dali/internal/adaptor/glib/framework-glib.cpp
dali/internal/adaptor/glib/framework-glib.h
dali/internal/offscreen/common/offscreen-application-impl.cpp
dali/internal/offscreen/common/offscreen-application-impl.h

index 0ad6713..e6b4aae 100644 (file)
@@ -70,6 +70,11 @@ void OffscreenApplication::RenderOnce()
   Internal::GetImplementation(*this).RenderOnce();
 }
 
+Any OffscreenApplication::GetFrameworkContext() const
+{
+  return Internal::GetImplementation(*this).GetFrameworkContext();
+}
+
 OffscreenApplication::OffscreenApplicationSignalType& OffscreenApplication::InitSignal()
 {
   return Internal::GetImplementation(*this).InitSignal();
index d7b6249..f31cd2d 100644 (file)
@@ -124,6 +124,12 @@ public:
    */
   void RenderOnce();
 
+  /**
+   * @brief Gets the context of the framwork
+   * @return Platform dependent context handle
+   */
+  Any GetFrameworkContext() const;
+
 public: // Signals
         /**
    * @brief Signal to notify the client when the application is ready to be initialized
index b53319d..e9837f9 100644 (file)
@@ -53,6 +53,11 @@ std::string Framework::GetRegion() const
   return NOT_SUPPORTED;
 }
 
+Any Framework::GetMainLoopContext() const
+{
+  return nullptr;
+}
+
 bool Framework::IsMainLoopRunning()
 {
   return mRunning;
index 0f64fc5..ad89efe 100644 (file)
@@ -300,6 +300,12 @@ public:
   virtual std::string GetRegion() const;
 
   /**
+   * Gets the context of the main loop
+   * @return Platform dependent context handle
+   */
+  virtual Any GetMainLoopContext() const;
+
+  /**
    * Checks whether the main loop of the framework is running.
    * @return true, if the main loop is running, false otherwise.
    */
index 5123131..dbcbbfc 100644 (file)
@@ -28,15 +28,11 @@ namespace Internal
 {
 namespace Adaptor
 {
-thread_local GMainLoop* gMainLoop{nullptr};
+thread_local GMainContext* gContext{nullptr};
 
 GMainContext* GetMainLoopContext()
 {
-  if(gMainLoop != nullptr)
-  {
-    return g_main_loop_get_context(gMainLoop);
-  }
-  return nullptr;
+  return gContext;
 }
 
 /**
@@ -47,14 +43,16 @@ struct FrameworkGlib::Impl
   // Constructor
   Impl(void* data)
   {
-    GMainContext* context = g_main_context_new();
-    gMainLoop = mMainLoop = g_main_loop_new(context, false);
+    gContext = mContext = g_main_context_new();
+    mMainLoop           = g_main_loop_new(mContext, false);
   }
 
   ~Impl()
   {
     g_main_loop_unref(mMainLoop);
-    gMainLoop = nullptr;
+    g_main_context_unref(mContext);
+
+    gContext = nullptr;
   }
 
   void Run()
@@ -108,6 +106,11 @@ void FrameworkGlib::Quit()
   mImpl->Quit();
 }
 
+Any FrameworkGlib::GetMainLoopContext() const
+{
+  return mImpl->mContext;
+}
+
 } // namespace Adaptor
 
 } // namespace Internal
index da44e6c..b3e51d8 100644 (file)
@@ -53,6 +53,11 @@ public:
    */
   void Quit() override;
 
+  /**
+   * @copydoc Dali::Internal::Adaptor::Framework::GetMainLoopContext()
+   */
+  Any GetMainLoopContext() const override;
+
 private:
   // Undefined
   FrameworkGlib(const FrameworkGlib&) = delete;
index 394b637..3676131 100644 (file)
@@ -89,6 +89,11 @@ void OffscreenApplication::RenderOnce()
   mAdaptor->RenderOnce();
 }
 
+Any OffscreenApplication::GetFrameworkContext() const
+{
+  return mFramework->GetMainLoopContext();
+}
+
 void OffscreenApplication::OnInit()
 {
   // Start the adaptor
index 48dc0e3..b049c13 100644 (file)
@@ -79,6 +79,11 @@ public:
    */
   void RenderOnce();
 
+  /**
+   * @copydoc Dali::OffscreenApplication::GetFrameworkContext()
+   */
+  Any GetFrameworkContext() const;
+
 public: // Signals
   /**
    * @copydoc Dali::OffscreenApplication::InitSignal()