X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Frender%2Frenderers%2Frender-surface-frame-buffer.h;h=fa7128915678670ade81e93116a6c3db8d915b69;hb=79897a46f5c21d07fb80b5fbb4651760821881c3;hp=ebe7eb59ae340e2b70e3ca065d9dd946fd0b5381;hpb=c163578c36b4a1674b06ab7f1f3cd446b7f840f6;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/render/renderers/render-surface-frame-buffer.h b/dali/internal/render/renderers/render-surface-frame-buffer.h old mode 100644 new mode 100755 index ebe7eb5..fa71289 --- a/dali/internal/render/renderers/render-surface-frame-buffer.h +++ b/dali/internal/render/renderers/render-surface-frame-buffer.h @@ -17,6 +17,9 @@ * limitations under the License. */ +// EXTERNAL INCLUDES +#include + // INTERNAL INCLUDES #include #include @@ -96,6 +99,18 @@ public: */ void SetBackgroundColor( const Vector4& color ); + /** + * @copydoc Dali::Internal::FrameBuffer::MarkSurfaceAsInvalid() + */ + void MarkSurfaceAsInvalid() { mIsSurfaceInvalid = true; }; + + /** + * @brief Gets whether the render surface in this frame buffer is valid or not + * @note The render surface becomes invalid when it is deleted in the event thread + * @return Whether the render surface is valid or not + */ + bool IsSurfaceValid() const; + public: /** @@ -110,16 +125,9 @@ public: Context* GetContext(); /** - * @brief Gets whether the depth buffer is required - * @return TRUE if the depth buffer is required + * @brief Makes the graphics context current */ - Integration::DepthBufferAvailable GetDepthBufferRequired(); - - /** - * @brief Gets whether the stencil buffer is required - * @return TRUE if the stencil buffer is required - */ - Integration::StencilBufferAvailable GetStencilBufferRequired(); + void MakeContextCurrent(); /** * @brief Gets the background color of the surface. @@ -127,6 +135,24 @@ public: */ Vector4 GetBackgroundColor(); + /** + * @brief Sets currentframe updated/damaged rects + * @return merged update rects + */ + Rect SetDamagedRect( const Rect& damagedRect ); + + /** + * @brief Gets whether partial update is required for partial update + * @return whether partial update or not + */ + bool IsPartialUpdateEnabled() const; + + /** + * @brief Sets whether partial update is required for partial update + * @param[in] value whether partial update or not + */ + void SetPartialUpdateEnabled( bool value ); + private: Integration::RenderSurface* mSurface; ///< The render surface @@ -136,6 +162,9 @@ private: uint32_t mHeight; Vector4 mBackgroundColor; bool mSizeChanged; + bool mBackgroundColorChanged; + std::atomic mIsSurfaceInvalid; ///< This is set only from the event thread and read only from the render thread + bool mPartialUpdateEnabled; ///< This value is whether partial update is required }; // Messages for FrameBuffer @@ -161,6 +190,17 @@ inline void SetFrameBufferBackgroundColorMessage( SceneGraph::UpdateManager& upd new (slot) LocalType( surfaceFrameBuffer, &SurfaceFrameBuffer::SetBackgroundColor, color ); } +inline void SetFrameBufferPartialUpdateMessage( SceneGraph::UpdateManager& updateManager, SurfaceFrameBuffer* surfaceFrameBuffer, bool value ) +{ + typedef MessageValue1< SurfaceFrameBuffer, bool > LocalType; + + // Reserve some memory inside the message queue + uint32_t* slot = updateManager.ReserveMessageSlot( sizeof( LocalType ) ); + + // Construct message in the message queue memory; note that delete should not be called on the return value + new (slot) LocalType( surfaceFrameBuffer, &SurfaceFrameBuffer::SetPartialUpdateEnabled, value ); +} + } // namespace Render } // namespace Internal