Revert "[Tizen] Implement partial update"
[platform/core/uifw/dali-core.git] / dali / internal / render / renderers / render-surface-frame-buffer.cpp
index 4b63c33..7154ff6 100644 (file)
@@ -34,7 +34,8 @@ SurfaceFrameBuffer::SurfaceFrameBuffer( Integration::RenderSurface* surface )
   mWidth( mSurface->GetPositionSize().width ),
   mHeight( mSurface->GetPositionSize().height ),
   mBackgroundColor( 0.f, 0.f, 0.f, 1.f ),
-  mSizeChanged( false )
+  mSizeChanged( false ),
+  mIsSurfaceInvalid( false )
 {
 }
 
@@ -43,6 +44,11 @@ SurfaceFrameBuffer::~SurfaceFrameBuffer()
 
 void SurfaceFrameBuffer::Destroy( Context& context )
 {
+  if ( IsSurfaceValid() )
+  {
+    mSurface->DestroySurface();
+    mSurface = nullptr;
+  }
 }
 
 void SurfaceFrameBuffer::GlContextDestroyed()
@@ -51,20 +57,33 @@ void SurfaceFrameBuffer::GlContextDestroyed()
   {
     mContext->GlContextDestroyed();
   }
+
+  if ( IsSurfaceValid() )
+  {
+    mSurface->DestroySurface();
+    mSurface = nullptr;
+  }
 }
 
 void SurfaceFrameBuffer::Initialize(Context& context)
 {
   mContext = &context;
   mContext->GlContextCreated();
-  mSurface->InitializeGraphics();
+
+  if ( IsSurfaceValid() )
+  {
+    mSurface->InitializeGraphics();
+  }
 }
 
 void SurfaceFrameBuffer::Bind( Context& context )
 {
-  mSurface->PreRender( mSizeChanged );
+  if ( IsSurfaceValid() )
+  {
+    mSurface->PreRender( mSizeChanged );
 
-  context.BindFramebuffer( GL_FRAMEBUFFER, 0u );
+    context.BindFramebuffer( GL_FRAMEBUFFER, 0u );
+  }
 }
 
 uint32_t SurfaceFrameBuffer::GetWidth() const
@@ -79,7 +98,10 @@ uint32_t SurfaceFrameBuffer::GetHeight() const
 
 void SurfaceFrameBuffer::PostRender()
 {
-  mSurface->PostRender( false, false, mSizeChanged );
+  if ( IsSurfaceValid() )
+  {
+    mSurface->PostRender( false, false, mSizeChanged );
+  }
 
   mSizeChanged = false;
 }
@@ -89,14 +111,12 @@ Context* SurfaceFrameBuffer::GetContext()
   return mContext;
 }
 
-Integration::DepthBufferAvailable SurfaceFrameBuffer::GetDepthBufferRequired()
-{
-  return mSurface->GetDepthBufferRequired();
-}
-
-Integration::StencilBufferAvailable SurfaceFrameBuffer::GetStencilBufferRequired()
+void SurfaceFrameBuffer::MakeContextCurrent()
 {
-  return mSurface->GetStencilBufferRequired();
+  if ( IsSurfaceValid() )
+  {
+    mSurface->MakeContextCurrent();
+  }
 }
 
 Vector4 SurfaceFrameBuffer::GetBackgroundColor()
@@ -116,6 +136,11 @@ void SurfaceFrameBuffer::SetBackgroundColor( const Vector4& color )
   mBackgroundColor = color;
 }
 
+bool SurfaceFrameBuffer::IsSurfaceValid() const
+{
+  return mSurface && !mIsSurfaceInvalid;
+}
+
 } //Render
 
 } //Internal