X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Fintegration-api%2Fadaptor-framework%2Frender-surface-interface.h;h=45250b16a19113fda8f3ae74a3b06e7efd029ecc;hb=aa19ec5a3944989bb2eed21eb6c316775cafd38a;hp=5f6d2dfa077f6e5d9983d479c2a2cdd3bc8d3e6b;hpb=9a9e93e93a46932223584bb6d2d32eede5ad85b1;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git diff --git a/dali/integration-api/adaptor-framework/render-surface-interface.h b/dali/integration-api/adaptor-framework/render-surface-interface.h index 5f6d2df..45250b1 100644 --- a/dali/integration-api/adaptor-framework/render-surface-interface.h +++ b/dali/integration-api/adaptor-framework/render-surface-interface.h @@ -20,16 +20,16 @@ // EXTERNAL INCLUDES #include +#include #include -#include #include +#include +#include #include #include -#include namespace Dali { - class DisplayConnection; class ThreadSynchronizationInterface; @@ -39,13 +39,14 @@ namespace Adaptor { class AdaptorInternalServices; class GraphicsInterface; -} -} +} // namespace Adaptor +} // namespace Internal /** * @brief The position and size of the render surface. */ -typedef Dali::Rect PositionSize; +using PositionSize = Dali::Rect; +using SurfaceSize = Uint16Pair; /** * @brief Interface for a render surface onto which Dali draws. @@ -63,7 +64,6 @@ typedef Dali::Rect PositionSize; class RenderSurfaceInterface { public: - enum Type { WINDOW_RENDER_SURFACE, @@ -76,19 +76,23 @@ public: * Inlined as this is a pure abstract interface */ RenderSurfaceInterface() - : mAdaptor( nullptr ), - mGraphics( nullptr ), - mDisplayConnection( nullptr ), + : mAdaptor(nullptr), + mGraphics(nullptr), + mDisplayConnection(nullptr), mScene(), - mDepthBufferRequired( Integration::DepthBufferAvailable::FALSE ), - mStencilBufferRequired( Integration::StencilBufferAvailable::FALSE ) - {} + mFullSwapNextFrame(true), + mDepthBufferRequired(Integration::DepthBufferAvailable::FALSE), + mStencilBufferRequired(Integration::StencilBufferAvailable::FALSE) + { + } /** * @brief Virtual Destructor. * Inlined as this is a pure abstract interface */ - virtual ~RenderSurfaceInterface() {} + virtual ~RenderSurfaceInterface() + { + } /** * @brief Return the size and position of the surface. @@ -101,7 +105,7 @@ public: * @param[out] dpiHorizontal set to the horizontal dpi * @param[out] dpiVertical set to the vertical dpi */ - virtual void GetDpi( unsigned int& dpiHorizontal, unsigned int& dpiVertical ) = 0; + virtual void GetDpi(unsigned int& dpiHorizontal, unsigned int& dpiVertical) = 0; /** * @brief Return the orientation of the surface. @@ -134,7 +138,7 @@ public: * @brief Resizes the underlying surface. * @param[in] The dimensions of the new position */ - virtual void MoveResize( Dali::PositionSize positionSize ) = 0; + virtual void MoveResize(Dali::PositionSize positionSize) = 0; /** * @brief Called when Render thread has started @@ -149,7 +153,7 @@ public: * @param[in] damagedRects List of damaged rects this render pass * @return True if the operation is successful, False if the operation failed */ - virtual bool PreRender( bool resizingSurface, const std::vector>& damagedRects, Rect& clippingRect ) = 0; + virtual bool PreRender(bool resizingSurface, const std::vector>& damagedRects, Rect& clippingRect) = 0; /** * @brief Invoked by render thread after Core::Render @@ -157,7 +161,7 @@ public: * @param[in] replacingSurface True if the surface is being replaced. * @param[in] resizingSurface True if the surface is being resized. */ - virtual void PostRender( bool renderToFbo, bool replacingSurface, bool resizingSurface, const std::vector>& damagedRects ) = 0; + virtual void PostRender(bool renderToFbo, bool replacingSurface, bool resizingSurface, const std::vector>& damagedRects) = 0; /** * @brief Invoked by render thread when the thread should be stop @@ -174,7 +178,7 @@ public: * * @param threadSynchronization The thread-synchronization implementation. */ - virtual void SetThreadSynchronization( ThreadSynchronizationInterface& threadSynchronization ) = 0; + virtual void SetThreadSynchronization(ThreadSynchronizationInterface& threadSynchronization) = 0; /** * @brief Gets the surface type @@ -199,18 +203,17 @@ public: virtual Integration::StencilBufferAvailable GetStencilBufferRequired() = 0; public: - - void SetAdaptor( Dali::Internal::Adaptor::AdaptorInternalServices& adaptor ) + void SetAdaptor(Dali::Internal::Adaptor::AdaptorInternalServices& adaptor) { mAdaptor = &adaptor; } - void SetGraphicsInterface( Dali::Internal::Adaptor::GraphicsInterface& graphics ) + void SetGraphicsInterface(Dali::Internal::Adaptor::GraphicsInterface& graphics) { mGraphics = &graphics; } - void SetDisplayConnection( Dali::DisplayConnection& displayConnection ) + void SetDisplayConnection(Dali::DisplayConnection& displayConnection) { mDisplayConnection = &displayConnection; } @@ -219,36 +222,42 @@ public: * @brief Sets a Scene that is rendered on this surface. * @param scene The Scene object */ - void SetScene( Dali::Integration::Scene& scene ) + void SetScene(Dali::Integration::Scene& scene) { mScene = scene; } -private: + /** + * @brief Forces full surface swap next frame, resets current partial update state. + */ + void SetFullSwapNextFrame() + { + mFullSwapNextFrame = true; + } +private: /** * @brief Undefined copy constructor. RenderSurface cannot be copied */ - RenderSurfaceInterface( const RenderSurfaceInterface& rhs ); + RenderSurfaceInterface(const RenderSurfaceInterface& rhs); /** * @brief Undefined assignment operator. RenderSurface cannot be copied */ - RenderSurfaceInterface& operator=( const RenderSurfaceInterface& rhs ); + RenderSurfaceInterface& operator=(const RenderSurfaceInterface& rhs); protected: - Dali::Internal::Adaptor::AdaptorInternalServices* mAdaptor; - Dali::Internal::Adaptor::GraphicsInterface* mGraphics; - Dali::DisplayConnection* mDisplayConnection; - WeakHandle< Dali::Integration::Scene > mScene; + Dali::Internal::Adaptor::GraphicsInterface* mGraphics; + Dali::DisplayConnection* mDisplayConnection; + WeakHandle mScene; + bool mFullSwapNextFrame; ///< Whether the full surface swap is required private: + Integration::DepthBufferAvailable mDepthBufferRequired; ///< Whether the depth buffer is required + Integration::StencilBufferAvailable mStencilBufferRequired; ///< Whether the stencil buffer is required - Integration::DepthBufferAvailable mDepthBufferRequired; ///< Whether the depth buffer is required - Integration::StencilBufferAvailable mStencilBufferRequired; ///< Whether the stencil buffer is required - - Vector4 mBackgroundColor; ///< The background color of the surface + Vector4 mBackgroundColor; ///< The background color of the surface }; } // namespace Dali