X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Frender%2Frenderers%2Frender-surface-frame-buffer.cpp;h=babd67f54db66ddf43530599191010eba6ebdbd3;hb=refs%2Ftags%2Faccepted%2Ftizen%2Funified%2F20190911.111620;hp=7f1866d4a828f9fbb3bc0ecb5f2066e2c360465b;hpb=010bab2d6574983fcf9977c7b65966a8386f6846;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 old mode 100644 new mode 100755 index 7f1866d..babd67f --- a/dali/internal/render/renderers/render-surface-frame-buffer.cpp +++ b/dali/internal/render/renderers/render-surface-frame-buffer.cpp @@ -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 ) { } @@ -44,7 +46,7 @@ SurfaceFrameBuffer::~SurfaceFrameBuffer() void SurfaceFrameBuffer::Destroy( Context& context ) { - if ( mSurface && !mIsSurfaceInvalid ) + if ( IsSurfaceValid() ) { mSurface->DestroySurface(); mSurface = nullptr; @@ -58,7 +60,7 @@ void SurfaceFrameBuffer::GlContextDestroyed() mContext->GlContextDestroyed(); } - if ( mSurface && !mIsSurfaceInvalid ) + if ( IsSurfaceValid() ) { mSurface->DestroySurface(); mSurface = nullptr; @@ -70,7 +72,7 @@ void SurfaceFrameBuffer::Initialize(Context& context) mContext = &context; mContext->GlContextCreated(); - if ( mSurface && !mIsSurfaceInvalid ) + if ( IsSurfaceValid() ) { mSurface->InitializeGraphics(); } @@ -78,7 +80,7 @@ void SurfaceFrameBuffer::Initialize(Context& context) void SurfaceFrameBuffer::Bind( Context& context ) { - if ( mSurface && !mIsSurfaceInvalid ) + if ( IsSurfaceValid() ) { mSurface->PreRender( mSizeChanged ); @@ -98,12 +100,24 @@ uint32_t SurfaceFrameBuffer::GetHeight() const void SurfaceFrameBuffer::PostRender() { - if ( mSurface && !mIsSurfaceInvalid ) + if ( IsSurfaceValid() ) { mSurface->PostRender( false, false, mSizeChanged ); } mSizeChanged = false; + mBackgroundColorChanged = false; + mPartialUpdateEnabled = true; +} + +Rect SurfaceFrameBuffer::SetDamagedRect( const Rect& damagedRect ) +{ + Rect ret; + if ( IsSurfaceValid() ) + { + ret = mSurface->SetDamagedRect( damagedRect ); + } + return ret; } Context* SurfaceFrameBuffer::GetContext() @@ -113,22 +127,12 @@ 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; @@ -144,6 +148,27 @@ void SurfaceFrameBuffer::SetSize( uint32_t width, uint32_t height ) 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