X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fupdate%2Frender-tasks%2Fscene-graph-render-task-list.cpp;h=edbbe4a69e74c7c5d134a7444df4f5730f780e2d;hb=eacc080fe975c523d722dd17c044652317ddd6e8;hp=63d9118972d8519a6f4b8d11143a11def12d45c2;hpb=614c449e99a5e63d340d2ef6a802791b987c16db;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/update/render-tasks/scene-graph-render-task-list.cpp b/dali/internal/update/render-tasks/scene-graph-render-task-list.cpp index 63d9118..edbbe4a 100644 --- a/dali/internal/update/render-tasks/scene-graph-render-task-list.cpp +++ b/dali/internal/update/render-tasks/scene-graph-render-task-list.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 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. @@ -23,7 +23,6 @@ namespace //Unnamed namespace { - //Memory pool used to allocate new RenderTaskLists. Memory used by this pool will be released when shutting down DALi Dali::Internal::MemoryPoolObjectAllocator gRenderTaskListMemoryPool; @@ -31,57 +30,66 @@ Dali::Internal::MemoryPoolObjectAllocator( ptr ) ); + gRenderTaskListMemoryPool.FreeThreadSafe(static_cast(ptr)); } -void RenderTaskList::SetRenderMessageDispatcher( RenderMessageDispatcher* renderMessageDispatcher ) +void RenderTaskList::SetRenderMessageDispatcher(RenderMessageDispatcher* renderMessageDispatcher) { mRenderMessageDispatcher = renderMessageDispatcher; } -void RenderTaskList::AddTask( OwnerPointer< RenderTask >& newTask ) +void RenderTaskList::AddTask(OwnerPointer& newTask) { - DALI_ASSERT_DEBUG( newTask != NULL && "SceneGraph RenderTask is null"); - DALI_ASSERT_DEBUG( mRenderMessageDispatcher != NULL && "RenderMessageDispatcher is null"); + DALI_ASSERT_DEBUG(newTask && "SceneGraph RenderTask is null"); + DALI_ASSERT_DEBUG(mRenderMessageDispatcher != NULL && "RenderMessageDispatcher is null"); + + newTask->Initialize(*mRenderMessageDispatcher); - newTask->Initialize( *mRenderMessageDispatcher ); - // mRenderTasks container takes ownership - mRenderTasks.PushBack( newTask.Release() ); + if(mOverlayRenderTask && mRenderTasks[mRenderTasks.Size() - 1] == mOverlayRenderTask) + { + mRenderTasks.Insert(mRenderTasks.End() - 1, newTask.Release()); + } + else + { + mRenderTasks.PushBack(newTask.Release()); + } } -void RenderTaskList::RemoveTask( RenderTask* task ) +void RenderTaskList::AddOverlayTask(OwnerPointer& newTask) +{ + AddTask(newTask); + mOverlayRenderTask = mRenderTasks[mRenderTasks.Size() - 1]; +} + +void RenderTaskList::RemoveTask(RenderTask* task) { RenderTaskContainer::ConstIterator end = mRenderTasks.End(); - for ( RenderTaskContainer::Iterator iter = mRenderTasks.Begin(); iter != end; ++iter ) + for(RenderTaskContainer::Iterator iter = mRenderTasks.Begin(); iter != end; ++iter) { - if ( *iter == task ) + if(*iter == task) { // Destroy the task - mRenderTasks.Erase( iter ); + mRenderTasks.Erase(iter); break; // we're finished } @@ -90,7 +98,7 @@ void RenderTaskList::RemoveTask( RenderTask* task ) uint32_t RenderTaskList::GetTaskCount() { - return static_cast( mRenderTasks.Count() ); + return static_cast(mRenderTasks.Count()); } RenderTaskList::RenderTaskContainer& RenderTaskList::GetTasks() @@ -103,18 +111,21 @@ const RenderTaskList::RenderTaskContainer& RenderTaskList::GetTasks() const return mRenderTasks; } -void RenderTaskList::SetCompleteNotificationInterface( CompleteNotificationInterface* object ) +void RenderTaskList::SetCompleteNotificationInterface(CompleteNotificationInterface* object) { - mNotificationObject = object; } CompleteNotificationInterface* RenderTaskList::GetCompleteNotificationInterface() { - return mNotificationObject; } +uint32_t RenderTaskList::GetMemoryPoolCapacity() +{ + return gRenderTaskListMemoryPool.GetCapacity(); +} + } // namespace SceneGraph } // namespace Internal