X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Frender%2Frenderers%2Frender-surface-frame-buffer.cpp;h=7154ff698723d1488c251b48f7933549daf64efb;hb=4f6cc67ac85e504f3be6e05a9560a3fc862a0a6d;hp=4b63c331cce3b0c920a975af7d27f4c40c155c5b;hpb=944c743891cfb3e98ff619efef3018a0f136dedc;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/render/renderers/render-surface-frame-buffer.cpp b/dali/internal/render/renderers/render-surface-frame-buffer.cpp index 4b63c33..7154ff6 100644 --- a/dali/internal/render/renderers/render-surface-frame-buffer.cpp +++ b/dali/internal/render/renderers/render-surface-frame-buffer.cpp @@ -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