From: Heeyong Song Date: Mon, 10 Jul 2023 05:09:28 +0000 (+0900) Subject: Add GetFrameworkContext to OffscreenApplication X-Git-Tag: dali_2.2.35~5 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F90%2F295490%2F4;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git Add GetFrameworkContext to OffscreenApplication Change-Id: I9160d0777525f2a4aa854fcf8cb63202c1efe347 --- diff --git a/dali/devel-api/adaptor-framework/offscreen-application.cpp b/dali/devel-api/adaptor-framework/offscreen-application.cpp index 0ad6713..e6b4aae 100644 --- a/dali/devel-api/adaptor-framework/offscreen-application.cpp +++ b/dali/devel-api/adaptor-framework/offscreen-application.cpp @@ -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(); diff --git a/dali/devel-api/adaptor-framework/offscreen-application.h b/dali/devel-api/adaptor-framework/offscreen-application.h index d7b6249..f31cd2d 100644 --- a/dali/devel-api/adaptor-framework/offscreen-application.h +++ b/dali/devel-api/adaptor-framework/offscreen-application.h @@ -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 diff --git a/dali/internal/adaptor/common/framework.cpp b/dali/internal/adaptor/common/framework.cpp index b53319d..e9837f9 100644 --- a/dali/internal/adaptor/common/framework.cpp +++ b/dali/internal/adaptor/common/framework.cpp @@ -53,6 +53,11 @@ std::string Framework::GetRegion() const return NOT_SUPPORTED; } +Any Framework::GetMainLoopContext() const +{ + return nullptr; +} + bool Framework::IsMainLoopRunning() { return mRunning; diff --git a/dali/internal/adaptor/common/framework.h b/dali/internal/adaptor/common/framework.h index 0f64fc5..ad89efe 100644 --- a/dali/internal/adaptor/common/framework.h +++ b/dali/internal/adaptor/common/framework.h @@ -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. */ diff --git a/dali/internal/adaptor/glib/framework-glib.cpp b/dali/internal/adaptor/glib/framework-glib.cpp index 5123131..dbcbbfc 100644 --- a/dali/internal/adaptor/glib/framework-glib.cpp +++ b/dali/internal/adaptor/glib/framework-glib.cpp @@ -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 diff --git a/dali/internal/adaptor/glib/framework-glib.h b/dali/internal/adaptor/glib/framework-glib.h index da44e6c..b3e51d8 100644 --- a/dali/internal/adaptor/glib/framework-glib.h +++ b/dali/internal/adaptor/glib/framework-glib.h @@ -53,6 +53,11 @@ public: */ void Quit() override; + /** + * @copydoc Dali::Internal::Adaptor::Framework::GetMainLoopContext() + */ + Any GetMainLoopContext() const override; + private: // Undefined FrameworkGlib(const FrameworkGlib&) = delete; diff --git a/dali/internal/offscreen/common/offscreen-application-impl.cpp b/dali/internal/offscreen/common/offscreen-application-impl.cpp index 394b637..3676131 100644 --- a/dali/internal/offscreen/common/offscreen-application-impl.cpp +++ b/dali/internal/offscreen/common/offscreen-application-impl.cpp @@ -89,6 +89,11 @@ void OffscreenApplication::RenderOnce() mAdaptor->RenderOnce(); } +Any OffscreenApplication::GetFrameworkContext() const +{ + return mFramework->GetMainLoopContext(); +} + void OffscreenApplication::OnInit() { // Start the adaptor diff --git a/dali/internal/offscreen/common/offscreen-application-impl.h b/dali/internal/offscreen/common/offscreen-application-impl.h index 48dc0e3..b049c13 100644 --- a/dali/internal/offscreen/common/offscreen-application-impl.h +++ b/dali/internal/offscreen/common/offscreen-application-impl.h @@ -79,6 +79,11 @@ public: */ void RenderOnce(); + /** + * @copydoc Dali::OffscreenApplication::GetFrameworkContext() + */ + Any GetFrameworkContext() const; + public: // Signals /** * @copydoc Dali::OffscreenApplication::InitSignal()