From 738fd571c706537f8897163684fcb9d3fd9d535e Mon Sep 17 00:00:00 2001 From: ANZ1217 Date: Mon, 6 Nov 2023 21:09:23 +0900 Subject: [PATCH 1/1] Add front buffer rendering APIs in Dali::Window Front buffer rendering is used to improve latency or real-time interactivity. Change-Id: I53d300db7bb589042b0137854f424696d127cd8a --- dali/devel-api/adaptor-framework/window-devel.cpp | 10 ++++++++++ dali/devel-api/adaptor-framework/window-devel.h | 16 ++++++++++++++++ dali/internal/adaptor/common/application-impl.cpp | 14 ++++++++++++-- dali/internal/adaptor/common/application-impl.h | 12 +++++++++--- .../window-system/android/window-base-android.cpp | 13 +++++++++++++ .../window-system/android/window-base-android.h | 15 +++++++++++++++ dali/internal/window-system/common/window-base.h | 18 ++++++++++++++++++ dali/internal/window-system/common/window-impl.cpp | 11 +++++++++++ dali/internal/window-system/common/window-impl.h | 10 ++++++++++ .../window-system/common/window-render-surface.cpp | 21 ++++++++++++++++++++- .../window-system/common/window-render-surface.h | 9 +++++++++ dali/internal/window-system/macos/window-base-mac.h | 16 ++++++++++++++++ .../internal/window-system/macos/window-base-mac.mm | 13 +++++++++++++ .../tizen-wayland/ecore-wl/window-base-ecore-wl.cpp | 13 +++++++++++++ .../tizen-wayland/ecore-wl/window-base-ecore-wl.h | 15 +++++++++++++++ .../ecore-wl2/window-base-ecore-wl2.cpp | 16 ++++++++++++++++ .../tizen-wayland/ecore-wl2/window-base-ecore-wl2.h | 16 ++++++++++++++++ .../ubuntu-x11/window-base-ecore-x.cpp | 13 +++++++++++++ .../window-system/ubuntu-x11/window-base-ecore-x.h | 15 +++++++++++++++ .../window-system/windows/window-base-win.cpp | 13 +++++++++++++ .../window-system/windows/window-base-win.h | 15 +++++++++++++++ dali/internal/window-system/x11/window-base-x.cpp | 13 +++++++++++++ dali/internal/window-system/x11/window-base-x.h | 15 +++++++++++++++ dali/public-api/adaptor-framework/application.cpp | 3 +++ 24 files changed, 319 insertions(+), 6 deletions(-) diff --git a/dali/devel-api/adaptor-framework/window-devel.cpp b/dali/devel-api/adaptor-framework/window-devel.cpp index 30cf358..b41149a 100644 --- a/dali/devel-api/adaptor-framework/window-devel.cpp +++ b/dali/devel-api/adaptor-framework/window-devel.cpp @@ -354,6 +354,16 @@ bool GetFullScreen(Window window) return GetImplementation(window).GetFullScreen(); } +void SetFrontBufferRendering(Window window, bool enable) +{ + GetImplementation(window).SetFrontBufferRendering(enable); +} + +bool GetFrontBufferRendering(Window window) +{ + return GetImplementation(window).GetFrontBufferRendering(); +} + InterceptKeyEventSignalType& InterceptKeyEventSignal(Window window) { return GetImplementation(window).InterceptKeyEventSignal(); diff --git a/dali/devel-api/adaptor-framework/window-devel.h b/dali/devel-api/adaptor-framework/window-devel.h index ca2e3e4..2a92b07 100644 --- a/dali/devel-api/adaptor-framework/window-devel.h +++ b/dali/devel-api/adaptor-framework/window-devel.h @@ -640,6 +640,22 @@ DALI_ADAPTOR_API void SetFullScreen(Window window, bool fullscreen); DALI_ADAPTOR_API bool GetFullScreen(Window window); /** + * @brief Enables or disables front buffer rendering. + * + * @param[in] window The window instance. + * @param[in] enable true to enable front buffer rendering, false to disable. + */ +DALI_ADAPTOR_API void SetFrontBufferRendering(Window window, bool enable); + +/** + * @brief Gets whether front buffer rendering is enabled. + * + * @param[in] window The window instance. + * @return Whether front buffer rendering has been enabled or not. + */ +DALI_ADAPTOR_API bool GetFrontBufferRendering(Window window); + +/** * @brief The user would connect to this signal to intercept a KeyEvent at window. * * Intercepts KeyEvents in the window before dispatching KeyEvents to the control. diff --git a/dali/internal/adaptor/common/application-impl.cpp b/dali/internal/adaptor/common/application-impl.cpp index a513be2..0f18afa 100644 --- a/dali/internal/adaptor/common/application-impl.cpp +++ b/dali/internal/adaptor/common/application-impl.cpp @@ -135,6 +135,7 @@ Application::Application(int* argc, char** argv[], const std::string& stylesheet mMainWindow(), mMainWindowMode(windowData.GetTransparency() ? WINDOW_MODE::TRANSPARENT : WINDOW_MODE::OPAQUE), mMainWindowName(), + mIsMainWindowFrontBufferRendering(windowData.GetFrontBufferRendering()), mStylesheet(stylesheet), mWindowPositionSize(windowData.GetPositionSize()), mLaunchpadState(Launchpad::NONE), @@ -203,6 +204,11 @@ void Application::StoreWindowPositionSize(PositionSize positionSize) mWindowPositionSize = positionSize; } +void Application::StoreFrontBufferRendering(bool enable) +{ + mIsMainWindowFrontBufferRendering = enable; +} + void Application::ChangePreInitializedWindowInfo() { // Set window name @@ -246,6 +252,9 @@ void Application::ChangePreInitializedWindowInfo() mWindowPositionSize.height = screenHeight; mMainWindow.SetSize(Dali::Window::WindowSize(mWindowPositionSize.width, mWindowPositionSize.height)); } + + // Set front buffer rendering + Dali::DevelWindow::SetFrontBufferRendering(mMainWindow, mIsMainWindowFrontBufferRendering); } void Application::CreateWindow() @@ -254,6 +263,7 @@ void Application::CreateWindow() WindowData windowData; windowData.SetTransparency(mMainWindowMode); windowData.SetWindowType(mDefaultWindowType); + windowData.SetFrontBufferRendering(mIsMainWindowFrontBufferRendering); DALI_LOG_RELEASE_INFO("Create Default Window"); @@ -290,8 +300,8 @@ void Application::CreateWindow() } else { - // The position, size and the window name of the pre-initialized application will be updated in ChangePreInitializedWindowInfo() - // when the real application is launched. + // The position, size, window name, and frontbuffering of the pre-initialized application + // will be updated in ChangePreInitializedWindowInfo() when the real application is launched. windowData.SetPositionSize(mWindowPositionSize); window = Internal::Adaptor::Window::New("", "", windowData); } diff --git a/dali/internal/adaptor/common/application-impl.h b/dali/internal/adaptor/common/application-impl.h index 109b5a9..8d0d9c4 100644 --- a/dali/internal/adaptor/common/application-impl.h +++ b/dali/internal/adaptor/common/application-impl.h @@ -160,6 +160,11 @@ public: void StoreWindowPositionSize(PositionSize positionSize); /** + * Stores the front buffer rendering status of the window. + */ + void StoreFrontBufferRendering(bool enable); + + /** * @copydoc Dali::DevelApplication::GetRenderThreadId() */ int32_t GetRenderThreadId() const; @@ -537,9 +542,10 @@ private: // The Main Window is that window created by the Application during initial startup // (previously this was the only window) - Dali::Window mMainWindow; ///< Main Window instance - Dali::Application::WINDOW_MODE mMainWindowMode; ///< Window mode of the main window - std::string mMainWindowName; ///< Name of the main window as obtained from environment options + Dali::Window mMainWindow; ///< Main Window instance + Dali::Application::WINDOW_MODE mMainWindowMode; ///< Window mode of the main window + std::string mMainWindowName; ///< Name of the main window as obtained from environment options + bool mIsMainWindowFrontBufferRendering; ///< Whether front buffer rendering of the main window is enabled std::string mStylesheet; PositionSize mWindowPositionSize; diff --git a/dali/internal/window-system/android/window-base-android.cpp b/dali/internal/window-system/android/window-base-android.cpp index 6766567..821da58 100644 --- a/dali/internal/window-system/android/window-base-android.cpp +++ b/dali/internal/window-system/android/window-base-android.cpp @@ -479,6 +479,19 @@ bool WindowBaseAndroid::GetFullScreen() return false; } +void WindowBaseAndroid::SetFrontBufferRendering(bool enable) +{ +} + +bool WindowBaseAndroid::GetFrontBufferRendering() +{ + return false; +} + +void WindowBaseAndroid::SetEglWindowFrontBufferMode(bool enable) +{ +} + } // namespace Adaptor } // namespace Internal diff --git a/dali/internal/window-system/android/window-base-android.h b/dali/internal/window-system/android/window-base-android.h index 2638cb3..3e92ba6 100644 --- a/dali/internal/window-system/android/window-base-android.h +++ b/dali/internal/window-system/android/window-base-android.h @@ -504,6 +504,21 @@ public: */ bool GetFullScreen() override; + /** + * @copydoc Dali::Internal::Adaptor::WindowBase::SetFrontBufferRendering() + */ + void SetFrontBufferRendering(bool enable) override; + + /** + * @copydoc Dali::Internal::Adaptor::WindowBase::GetFrontBufferRendering() + */ + bool GetFrontBufferRendering() override; + + /** + * @copydoc Dali::Internal::Adaptor::WindowBase::SetEglWindowFrontBufferMode() + */ + void SetEglWindowFrontBufferMode(bool enable) override; + private: /** * Second stage initialization diff --git a/dali/internal/window-system/common/window-base.h b/dali/internal/window-system/common/window-base.h index 4a80d81..7774da3 100644 --- a/dali/internal/window-system/common/window-base.h +++ b/dali/internal/window-system/common/window-base.h @@ -547,6 +547,24 @@ public: */ virtual bool GetFullScreen() = 0; + /** + * @brief Enables or disables front buffer rendering. + * @param[in] enable true to enable front buffer rendering, false to disable. + */ + virtual void SetFrontBufferRendering(bool enable) = 0; + + /** + * @brief Enables or disables front buffer rendering. + * @return Returns whether front buffer rendering has been enabled or not. + */ + virtual bool GetFrontBufferRendering() = 0; + + /** + * @brief Sets front buffer rendering to the egl window. + * @param[in] enable True to enable front buffer rendering mode, False to otherwise. + */ + virtual void SetEglWindowFrontBufferMode(bool enable) = 0; + // Signals /** diff --git a/dali/internal/window-system/common/window-impl.cpp b/dali/internal/window-system/common/window-impl.cpp index e91a74a..52ba60b 100644 --- a/dali/internal/window-system/common/window-impl.cpp +++ b/dali/internal/window-system/common/window-impl.cpp @@ -1476,6 +1476,17 @@ bool Window::GetFullScreen() return mWindowBase->GetFullScreen(); } +void Window::SetFrontBufferRendering(bool enable) +{ + mWindowBase->SetFrontBufferRendering(enable); + mWindowSurface->SetFrontBufferRendering(enable); +} + +bool Window::GetFrontBufferRendering() +{ + return mWindowBase->GetFrontBufferRendering(); +} + } // namespace Adaptor } // namespace Internal diff --git a/dali/internal/window-system/common/window-impl.h b/dali/internal/window-system/common/window-impl.h index 83908bf..d3d5ce5 100644 --- a/dali/internal/window-system/common/window-impl.h +++ b/dali/internal/window-system/common/window-impl.h @@ -562,6 +562,16 @@ public: // Dali::Internal::Adaptor::SceneHolder */ bool GetFullScreen(); + /** + * @copydoc Dali::DevelWindow::SetFrontBufferRendering() + */ + void SetFrontBufferRendering(bool enable); + + /** + * @copydoc Dali::DevelWindow::GetFrontBufferRendering() + */ + bool GetFrontBufferRendering(); + private: /** * @brief Enumeration for orietation mode. diff --git a/dali/internal/window-system/common/window-render-surface.cpp b/dali/internal/window-system/common/window-render-surface.cpp index 1955aa4..0d6dbdb 100644 --- a/dali/internal/window-system/common/window-render-surface.cpp +++ b/dali/internal/window-system/common/window-render-surface.cpp @@ -176,7 +176,9 @@ WindowRenderSurface::WindowRenderSurface(Dali::PositionSize positionSize, Any su mOwnSurface(false), mIsImeWindowSurface(false), mNeedWindowRotationAcknowledgement(false), - mIsWindowOrientationChanging(false) + mIsWindowOrientationChanging(false), + mIsFrontBufferRendering(false), + mIsFrontBufferRenderingChanged(false) { DALI_LOG_INFO(gWindowRenderSurfaceLogFilter, Debug::Verbose, "Creating Window\n"); Initialize(surface); @@ -589,6 +591,14 @@ bool WindowRenderSurface::PreRender(bool resizingSurface, const std::vectorSetEglWindowFrontBufferMode(mIsFrontBufferRendering); + SetFullSwapNextFrame(); + } + SetBufferDamagedRects(damagedRects, clippingRect); if(scene) @@ -944,6 +954,15 @@ void WindowRenderSurface::SwapBuffers(const std::vector>& damagedRects } } +void WindowRenderSurface::SetFrontBufferRendering(bool enable) +{ + if(mIsFrontBufferRendering != enable) + { + mIsFrontBufferRendering = enable; + mIsFrontBufferRenderingChanged = !mIsFrontBufferRenderingChanged; + } +} + } // namespace Adaptor } // namespace Internal diff --git a/dali/internal/window-system/common/window-render-surface.h b/dali/internal/window-system/common/window-render-surface.h index 371ff6b..c59bbef 100644 --- a/dali/internal/window-system/common/window-render-surface.h +++ b/dali/internal/window-system/common/window-render-surface.h @@ -161,6 +161,13 @@ public: // API */ RotationFinishedSignalType& RotationFinishedSignal(); + /** + * @brief Sets front buffer rendering flag + * + * @param[in] enable The flag for front buffer rendering + */ + void SetFrontBufferRendering(bool enable); + public: // from Dali::RenderSurfaceInterface /** * @copydoc Dali::RenderSurfaceInterface::GetPositionSize() @@ -365,6 +372,8 @@ private: // Data bool mIsImeWindowSurface; bool mNeedWindowRotationAcknowledgement; bool mIsWindowOrientationChanging; + bool mIsFrontBufferRendering; + bool mIsFrontBufferRenderingChanged; }; // class WindowRenderSurface diff --git a/dali/internal/window-system/macos/window-base-mac.h b/dali/internal/window-system/macos/window-base-mac.h index 425bcc5..640d527 100644 --- a/dali/internal/window-system/macos/window-base-mac.h +++ b/dali/internal/window-system/macos/window-base-mac.h @@ -437,6 +437,22 @@ public: */ bool GetFullScreen() override; + /** + * @copydoc Dali::Internal::Adaptor::WindowBase::SetFrontBufferRendering() + */ + void SetFrontBufferRendering(bool enable) override; + + /** + * @copydoc Dali::Internal::Adaptor::WindowBase::GetFrontBufferRendering() + */ + bool GetFrontBufferRendering() override; + + /** + * @brief Sets front buffer rendering to the egl window. + * @param[in] enable True to enable front buffer rendering mode, False to otherwise. + */ + void SetEglWindowFrontBufferMode(bool enable) override; + private: // Undefined WindowBaseCocoa(const WindowBaseCocoa&) = delete; diff --git a/dali/internal/window-system/macos/window-base-mac.mm b/dali/internal/window-system/macos/window-base-mac.mm index 374698d..f7ee40c 100644 --- a/dali/internal/window-system/macos/window-base-mac.mm +++ b/dali/internal/window-system/macos/window-base-mac.mm @@ -772,6 +772,19 @@ bool WindowBaseCocoa::GetFullScreen() return false; } +void WindowBaseCocoa::SetFrontBufferRendering(bool enable) +{ +} + +bool WindowBaseCocoa::GetFrontBufferRendering() +{ + return false; +} + +void WindowBaseCocoa::SetEglWindowFrontBufferMode(bool enable) +{ +} + } // namespace Dali::Internal::Adaptor @implementation CocoaView diff --git a/dali/internal/window-system/tizen-wayland/ecore-wl/window-base-ecore-wl.cpp b/dali/internal/window-system/tizen-wayland/ecore-wl/window-base-ecore-wl.cpp index fb8bf7f..1d7ae2b 100644 --- a/dali/internal/window-system/tizen-wayland/ecore-wl/window-base-ecore-wl.cpp +++ b/dali/internal/window-system/tizen-wayland/ecore-wl/window-base-ecore-wl.cpp @@ -2181,6 +2181,19 @@ void WindowBaseEcoreWl::ExcludeInputRegion(const Rect& inputRegion) { } +void WindowBaseEcoreWl::SetFrontBufferRendering(bool enable) +{ +} + +bool WindowBaseEcoreWl::GetFrontBufferRendering() +{ + return false; +} + +void WindowBaseEcoreWl::SetEglWindowFrontBufferMode(bool enable) +{ +} + } // namespace Adaptor } // namespace Internal diff --git a/dali/internal/window-system/tizen-wayland/ecore-wl/window-base-ecore-wl.h b/dali/internal/window-system/tizen-wayland/ecore-wl/window-base-ecore-wl.h index 08bfd90..fe84ebf 100644 --- a/dali/internal/window-system/tizen-wayland/ecore-wl/window-base-ecore-wl.h +++ b/dali/internal/window-system/tizen-wayland/ecore-wl/window-base-ecore-wl.h @@ -559,6 +559,21 @@ public: */ bool GetFullScreen() override; + /** + * @copydoc Dali::Internal::Adaptor::WindowBase::SetFrontBufferRendering() + */ + void SetFrontBufferRendering(bool enable) override; + + /** + * @copydoc Dali::Internal::Adaptor::WindowBase::GetFrontBufferRendering() + */ + bool GetFrontBufferRendering() override; + + /** + * @copydoc Dali::Internal::Adaptor::WindowBase::SetEglWindowFrontBufferMode() + */ + void SetEglWindowFrontBufferMode(bool enable) override; + private: /** * Second stage initialization diff --git a/dali/internal/window-system/tizen-wayland/ecore-wl2/window-base-ecore-wl2.cpp b/dali/internal/window-system/tizen-wayland/ecore-wl2/window-base-ecore-wl2.cpp index ae2a5db..bf6d748 100644 --- a/dali/internal/window-system/tizen-wayland/ecore-wl2/window-base-ecore-wl2.cpp +++ b/dali/internal/window-system/tizen-wayland/ecore-wl2/window-base-ecore-wl2.cpp @@ -921,6 +921,7 @@ WindowBaseEcoreWl2::WindowBaseEcoreWl2(Dali::PositionSize positionSize, Any surf mVisible(true), mOwnSurface(false), mBrightnessChangeDone(true), + mIsFrontBufferRendering(false), mIsIMEWindowInitialized(false) { Initialize(positionSize, surface, isTransparent); @@ -3555,6 +3556,21 @@ bool WindowBaseEcoreWl2::GetFullScreen() return ecore_wl2_window_fullscreen_get(mEcoreWindow); } +void WindowBaseEcoreWl2::SetFrontBufferRendering(bool enable) +{ + mIsFrontBufferRendering = enable; +} + +bool WindowBaseEcoreWl2::GetFrontBufferRendering() +{ + return mIsFrontBufferRendering; +} + +void WindowBaseEcoreWl2::SetEglWindowFrontBufferMode(bool enable) +{ + wl_egl_window_tizen_set_frontbuffer_mode(mEglWindow, enable); +} + } // namespace Adaptor } // namespace Internal diff --git a/dali/internal/window-system/tizen-wayland/ecore-wl2/window-base-ecore-wl2.h b/dali/internal/window-system/tizen-wayland/ecore-wl2/window-base-ecore-wl2.h index 3ff8d07..4ec38e0 100644 --- a/dali/internal/window-system/tizen-wayland/ecore-wl2/window-base-ecore-wl2.h +++ b/dali/internal/window-system/tizen-wayland/ecore-wl2/window-base-ecore-wl2.h @@ -641,6 +641,21 @@ public: */ bool GetFullScreen() override; + /** + * @copydoc Dali::Internal::Adaptor::WindowBase::SetFrontBufferRendering() + */ + void SetFrontBufferRendering(bool enable) override; + + /** + * @copydoc Dali::Internal::Adaptor::WindowBase::GetFrontBufferRendering() + */ + bool GetFrontBufferRendering() override; + + /** + * @copydoc Dali::Internal::Adaptor::WindowBase::SetEglWindowFrontBufferMode() + */ + void SetEglWindowFrontBufferMode(bool enable) override; + private: /** * Second stage initialization @@ -728,6 +743,7 @@ private: bool mVisible : 1; bool mOwnSurface; bool mBrightnessChangeDone; + bool mIsFrontBufferRendering; bool mIsIMEWindowInitialized; }; diff --git a/dali/internal/window-system/ubuntu-x11/window-base-ecore-x.cpp b/dali/internal/window-system/ubuntu-x11/window-base-ecore-x.cpp index 4356914..fa085a4 100644 --- a/dali/internal/window-system/ubuntu-x11/window-base-ecore-x.cpp +++ b/dali/internal/window-system/ubuntu-x11/window-base-ecore-x.cpp @@ -1066,6 +1066,19 @@ bool WindowBaseEcoreX::GetFullScreen() return false; } +void WindowBaseEcoreX::SetFrontBufferRendering(bool enable) +{ +} + +bool WindowBaseEcoreX::GetFrontBufferRendering() +{ + return false; +} + +void WindowBaseEcoreX::SetEglWindowFrontBufferMode(bool enable) +{ +} + } // namespace Adaptor } // namespace Internal diff --git a/dali/internal/window-system/ubuntu-x11/window-base-ecore-x.h b/dali/internal/window-system/ubuntu-x11/window-base-ecore-x.h index 0219289..f705111 100644 --- a/dali/internal/window-system/ubuntu-x11/window-base-ecore-x.h +++ b/dali/internal/window-system/ubuntu-x11/window-base-ecore-x.h @@ -509,6 +509,21 @@ public: */ bool GetFullScreen() override; + /** + * @copydoc Dali::Internal::Adaptor::WindowBase::SetFrontBufferRendering() + */ + void SetFrontBufferRendering(bool enable) override; + + /** + * @copydoc Dali::Internal::Adaptor::WindowBase::GetFrontBufferRendering() + */ + bool GetFrontBufferRendering() override; + + /** + * @copydoc Dali::Internal::Adaptor::WindowBase::SetEglWindowFrontBufferMode() + */ + void SetEglWindowFrontBufferMode(bool enable) override; + private: /** * Second stage initialization diff --git a/dali/internal/window-system/windows/window-base-win.cpp b/dali/internal/window-system/windows/window-base-win.cpp index dead822..1c3e8bf 100644 --- a/dali/internal/window-system/windows/window-base-win.cpp +++ b/dali/internal/window-system/windows/window-base-win.cpp @@ -701,6 +701,19 @@ bool WindowBaseWin::GetFullScreen() return false; } +void WindowBaseWin::SetFrontBufferRendering(bool enable) +{ +} + +bool WindowBaseWin::GetFrontBufferRendering() +{ + return false; +} + +void WindowBaseWin::SetEglWindowFrontBufferMode(bool enable) +{ +} + } // namespace Adaptor } // namespace Internal diff --git a/dali/internal/window-system/windows/window-base-win.h b/dali/internal/window-system/windows/window-base-win.h index ab5089f..d05f89c 100644 --- a/dali/internal/window-system/windows/window-base-win.h +++ b/dali/internal/window-system/windows/window-base-win.h @@ -491,6 +491,21 @@ public: */ bool GetFullScreen() override; + /** + * @copydoc Dali::Internal::Adaptor::WindowBase::SetFrontBufferRendering() + */ + void SetFrontBufferRendering(bool enable) override; + + /** + * @copydoc Dali::Internal::Adaptor::WindowBase::GetFrontBufferRendering() + */ + bool GetFrontBufferRendering() override; + + /** + * @copydoc Dali::Internal::Adaptor::WindowBase::SetEglWindowFrontBufferMode() + */ + void SetEglWindowFrontBufferMode(bool enable) override; + private: /** * Second stage initialization diff --git a/dali/internal/window-system/x11/window-base-x.cpp b/dali/internal/window-system/x11/window-base-x.cpp index 3b44812..da92eff 100644 --- a/dali/internal/window-system/x11/window-base-x.cpp +++ b/dali/internal/window-system/x11/window-base-x.cpp @@ -1002,6 +1002,19 @@ bool WindowBaseX::GetFullScreen() return false; } +void WindowBaseX::SetFrontBufferRendering(bool enable) +{ +} + +bool WindowBaseX::GetFrontBufferRendering() +{ + return false; +} + +void WindowBaseX::SetEglWindowFrontBufferMode(bool enable) +{ +} + } // namespace Adaptor } // namespace Internal diff --git a/dali/internal/window-system/x11/window-base-x.h b/dali/internal/window-system/x11/window-base-x.h index b7dc54c..867b7ad 100644 --- a/dali/internal/window-system/x11/window-base-x.h +++ b/dali/internal/window-system/x11/window-base-x.h @@ -513,6 +513,21 @@ public: */ bool GetFullScreen() override; + /** + * @copydoc Dali::Internal::Adaptor::WindowBase::SetFrontBufferRendering() + */ + void SetFrontBufferRendering(bool enable) override; + + /** + * @copydoc Dali::Internal::Adaptor::WindowBase::GetFrontBufferRendering() + */ + bool GetFrontBufferRendering() override; + + /** + * @copydoc Dali::Internal::Adaptor::WindowBase::SetEglWindowFrontBufferMode() + */ + void SetEglWindowFrontBufferMode(bool enable) override; + private: /** * Second stage initialization diff --git a/dali/public-api/adaptor-framework/application.cpp b/dali/public-api/adaptor-framework/application.cpp index 5db7add..7ced481 100644 --- a/dali/public-api/adaptor-framework/application.cpp +++ b/dali/public-api/adaptor-framework/application.cpp @@ -155,6 +155,9 @@ Application Application::New(int* argc, char** argv[], const std::string& styles // Store only the value before adaptor is created internal->StoreWindowPositionSize(windowData.GetPositionSize()); + + // Set front buffer rendering + internal->StoreFrontBufferRendering(windowData.GetFrontBufferRendering()); } else { -- 2.7.4