X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fupdate%2Fcommon%2Fdiscard-queue.cpp;h=0a889a6d3db858a3af0ab60753008990d382a322;hb=f6857330bd12f29b793ed22dc5ca82ec898a1280;hp=e0114b4bed71f0183a6c494828834df9830a6ba4;hpb=446cc2f7f201dc1f0cd29151ab621f3c78e30926;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 e0114b4..0a889a6 100644 --- a/dali/internal/update/common/discard-queue.cpp +++ b/dali/internal/update/common/discard-queue.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * Copyright (c) 2022 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,117 +19,86 @@ #include // INTERNAL INCLUDES -#include #include -#include #include #include -#include +#include +#include +#include #include namespace Dali { - namespace Internal { - namespace SceneGraph { - -DiscardQueue::DiscardQueue( RenderQueue& renderQueue ) -: mRenderQueue( renderQueue ) +DiscardQueue::DiscardQueue(RenderQueue& renderQueue) +: mRenderQueue(renderQueue), + mNodeQueue(), + mShaderQueue(), + mRendererQueue(), + mCameraQueue(), + mSceneQueue() { } -DiscardQueue::~DiscardQueue() -{ -} +DiscardQueue::~DiscardQueue() = default; -void DiscardQueue::Add( BufferIndex updateBufferIndex, Node* node ) +void DiscardQueue::Add(BufferIndex updateBufferIndex, Node* node) { - DALI_ASSERT_DEBUG( NULL != node ); + DALI_ASSERT_DEBUG(NULL != node); // 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 ) - { - mNodeQueue0.PushBack( node ); - } - else - { - mNodeQueue1.PushBack( node ); - } + mNodeQueue[updateBufferIndex].PushBack(node); } -void DiscardQueue::Add( BufferIndex updateBufferIndex, Shader* shader ) +void DiscardQueue::Add(BufferIndex updateBufferIndex, Shader* shader) { - DALI_ASSERT_DEBUG( NULL != shader ); + DALI_ASSERT_DEBUG(NULL != shader); // Programs are cached for the lifetime of DALi so no need for GL cleanup for shader for now. // 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 ) - { - mShaderQueue0.PushBack( shader ); - } - else - { - mShaderQueue1.PushBack( shader ); - } + mShaderQueue[updateBufferIndex].PushBack(shader); } -void DiscardQueue::Add( BufferIndex updateBufferIndex, Renderer* renderer ) +void DiscardQueue::Add(BufferIndex updateBufferIndex, Renderer* renderer) { - DALI_ASSERT_DEBUG( NULL != renderer ); + DALI_ASSERT_DEBUG(NULL != renderer); // 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 ) - { - mRendererQueue0.PushBack( renderer ); - } - else - { - mRendererQueue1.PushBack( renderer ); - } + mRendererQueue[updateBufferIndex].PushBack(renderer); } -void DiscardQueue::Add( BufferIndex updateBufferIndex, Camera* camera ) +void DiscardQueue::Add(BufferIndex updateBufferIndex, Camera* camera) { - DALI_ASSERT_DEBUG( NULL != camera ); - - if ( 0u == updateBufferIndex ) - { - mCameraQueue0.PushBack( camera ); - } - else - { - mCameraQueue1.PushBack( camera ); - } + DALI_ASSERT_DEBUG(NULL != camera); + + mCameraQueue[updateBufferIndex].PushBack(camera); } -void DiscardQueue::Clear( BufferIndex updateBufferIndex ) +void DiscardQueue::Add(BufferIndex updateBufferIndex, Scene* scene) { - // Destroy some discarded objects; these should no longer own any GL resources + DALI_ASSERT_DEBUG(NULL != scene); + + mSceneQueue[updateBufferIndex].PushBack(scene); +} - if ( 0u == updateBufferIndex ) - { - mNodeQueue0.Clear(); - mShaderQueue0.Clear(); - mRendererQueue0.Clear(); - mCameraQueue0.Clear(); - } - else - { - mNodeQueue1.Clear(); - mShaderQueue1.Clear(); - mRendererQueue1.Clear(); - mCameraQueue1.Clear(); - } +void DiscardQueue::Clear(BufferIndex updateBufferIndex) +{ + // Destroy some discarded objects; these should no longer own any GL resources + mNodeQueue[updateBufferIndex].Clear(); + mRendererQueue[updateBufferIndex].Clear(); + mShaderQueue[updateBufferIndex].Clear(); + mCameraQueue[updateBufferIndex].Clear(); + mSceneQueue[updateBufferIndex].Clear(); } } // namespace SceneGraph