[Tizen] Implement partial update
[platform/core/uifw/dali-core.git] / dali / internal / render / renderers / render-surface-frame-buffer.cpp
old mode 100644 (file)
new mode 100755 (executable)
index 7154ff6..c62251e
@@ -35,7 +35,9 @@ SurfaceFrameBuffer::SurfaceFrameBuffer( Integration::RenderSurface* surface )
   mHeight( mSurface->GetPositionSize().height ),
   mBackgroundColor( 0.f, 0.f, 0.f, 1.f ),
   mSizeChanged( false ),
-  mIsSurfaceInvalid( false )
+  mBackgroundColorChanged( false ),
+  mIsSurfaceInvalid( false ),
+  mPartialUpdateEnabled( true )
 {
 }
 
@@ -104,6 +106,18 @@ void SurfaceFrameBuffer::PostRender()
   }
 
   mSizeChanged = false;
+  mBackgroundColorChanged = false;
+  mPartialUpdateEnabled = true;
+}
+
+Rect<int32_t> SurfaceFrameBuffer::SetDamagedRect( Rect<int32_t> damagedRect )
+{
+  Rect<int32_t> ret;
+  if ( IsSurfaceValid() )
+  {
+    ret = mSurface->SetDamagedRect( damagedRect );
+  }
+  return ret;
 }
 
 Context* SurfaceFrameBuffer::GetContext()
@@ -134,6 +148,7 @@ void SurfaceFrameBuffer::SetSize( uint32_t width, uint32_t height )
 void SurfaceFrameBuffer::SetBackgroundColor( const Vector4& color )
 {
   mBackgroundColor = color;
+  mBackgroundColorChanged = true;
 }
 
 bool SurfaceFrameBuffer::IsSurfaceValid() const
@@ -141,6 +156,21 @@ bool SurfaceFrameBuffer::IsSurfaceValid() const
   return mSurface && !mIsSurfaceInvalid;
 }
 
+bool SurfaceFrameBuffer::IsPartialUpdateEnabled() const
+{
+  bool ret = false;
+  if ( IsSurfaceValid() )
+  {
+    ret = mSurface->GetBufferAge() && ( mPartialUpdateEnabled && !( mSizeChanged || mBackgroundColorChanged ) );
+  }
+  return ret;
+}
+
+void SurfaceFrameBuffer::SetPartialUpdateEnabled( bool value )
+{
+  mPartialUpdateEnabled = value;
+}
+
 } //Render
 
 } //Internal