mHeight( mSurface->GetPositionSize().height ),
mBackgroundColor( 0.f, 0.f, 0.f, 1.f ),
mSizeChanged( false ),
- mIsSurfaceInvalid( false )
+ mBackgroundColorChanged( false ),
+ mIsSurfaceInvalid( false ),
+ mPartialUpdateEnabled( true )
{
}
void SurfaceFrameBuffer::Destroy( Context& context )
{
- if ( mSurface && !mIsSurfaceInvalid )
+ if ( IsSurfaceValid() )
{
mSurface->DestroySurface();
mSurface = nullptr;
mContext->GlContextDestroyed();
}
- if ( mSurface && !mIsSurfaceInvalid )
+ if ( IsSurfaceValid() )
{
mSurface->DestroySurface();
mSurface = nullptr;
mContext = &context;
mContext->GlContextCreated();
- if ( mSurface && !mIsSurfaceInvalid )
+ if ( IsSurfaceValid() )
{
mSurface->InitializeGraphics();
}
void SurfaceFrameBuffer::Bind( Context& context )
{
- if ( mSurface && !mIsSurfaceInvalid )
+ if ( IsSurfaceValid() )
{
mSurface->PreRender( mSizeChanged );
void SurfaceFrameBuffer::PostRender()
{
- if ( mSurface && !mIsSurfaceInvalid )
+ if ( IsSurfaceValid() )
{
mSurface->PostRender( false, false, mSizeChanged );
}
mSizeChanged = false;
+ mBackgroundColorChanged = false;
+ mPartialUpdateEnabled = true;
+}
+
+void SurfaceFrameBuffer::SetDamagedRect( const Dali::DamagedRect& damagedRect, Dali::DamagedRect& mergedRect )
+{
+ if ( IsSurfaceValid() )
+ {
+ mSurface->SetDamagedRect( damagedRect, mergedRect );
+ }
}
Context* SurfaceFrameBuffer::GetContext()
void SurfaceFrameBuffer::MakeContextCurrent()
{
- if ( mSurface && !mIsSurfaceInvalid )
+ if ( IsSurfaceValid() )
{
mSurface->MakeContextCurrent();
}
}
-Integration::DepthBufferAvailable SurfaceFrameBuffer::GetDepthBufferRequired()
-{
- return mSurface && !mIsSurfaceInvalid ? Integration::DepthBufferAvailable::FALSE : mSurface->GetDepthBufferRequired();
-}
-
-Integration::StencilBufferAvailable SurfaceFrameBuffer::GetStencilBufferRequired()
-{
- return mSurface && !mIsSurfaceInvalid ? Integration::StencilBufferAvailable::TRUE : mSurface->GetStencilBufferRequired();
-}
-
Vector4 SurfaceFrameBuffer::GetBackgroundColor()
{
return mBackgroundColor;
void SurfaceFrameBuffer::SetBackgroundColor( const Vector4& color )
{
mBackgroundColor = color;
+ mBackgroundColorChanged = true;
+}
+
+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