X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fupdate%2Fcommon%2Fdiscard-queue.cpp;h=0e68acaf1a5162b512fe5ae32a844c92e16d186b;hb=132198d566f8fe76dc068861866f4e20fa8d69a5;hp=164035b2d5a667c8026c8f893a59918b2873f70b;hpb=4b2a120f2d6ff8e856813399b9a514e7e0548ae6;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/update/common/discard-queue.cpp b/dali/internal/update/common/discard-queue.cpp index 164035b..0e68aca 100644 --- a/dali/internal/update/common/discard-queue.cpp +++ b/dali/internal/update/common/discard-queue.cpp @@ -79,6 +79,41 @@ void DiscardQueue::Add( BufferIndex updateBufferIndex, NodeAttachment* attachmen } } +void DiscardQueue::Add( BufferIndex updateBufferIndex, Geometry* geometry ) +{ + DALI_ASSERT_DEBUG( NULL != geometry ); + + // The GL resources will now be freed in frame N + // The Update for frame N+1 may occur in parallel with the rendering of frame N + // Queue the node for destruction in frame N+2 + if ( 0u == updateBufferIndex ) + { + mGeometryQueue0.PushBack( geometry ); + } + else + { + mGeometryQueue1.PushBack( geometry ); + } +} + +void DiscardQueue::Add( BufferIndex updateBufferIndex, Material* material ) +{ + DALI_ASSERT_DEBUG( NULL != material ); + + // The GL resources will now be freed in frame N + // The Update for frame N+1 may occur in parallel with the rendering of frame N + // Queue the node for destruction in frame N+2 + if ( 0u == updateBufferIndex ) + { + mMaterialQueue0.PushBack( material ); + } + else + { + mMaterialQueue1.PushBack( material ); + } +} + + void DiscardQueue::Add( BufferIndex updateBufferIndex, Shader* shader ) { DALI_ASSERT_DEBUG( NULL != shader ); @@ -107,12 +142,16 @@ void DiscardQueue::Clear( BufferIndex updateBufferIndex ) mNodeQueue0.Clear(); mAttachmentQueue0.Clear(); mShaderQueue0.Clear(); + mGeometryQueue0.Clear(); + mMaterialQueue0.Clear(); } else { mNodeQueue1.Clear(); mAttachmentQueue1.Clear(); mShaderQueue1.Clear(); + mGeometryQueue1.Clear(); + mMaterialQueue1.Clear(); } }