X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fupdate%2Frender-tasks%2Fscene-graph-render-task-list.cpp;h=8139c2b29967f455debe4a4ebdf275ed3c03a3d3;hb=b8153c3ab592e6ebeaeebf31137538f972c27653;hp=6704082f07724e05d9da957c07803d19d8e8f8f2;hpb=03bb1840a40c61ff70f4de174615d93240bca7d8;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 6704082..8139c2b 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) 2015 Samsung Electronics Co., Ltd. + * Copyright (c) 2021 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,51 +19,74 @@ #include // INTERNAL INCLUDES -#include +#include -namespace Dali +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; + +} // unnamed namespace +namespace Dali +{ namespace Internal { - namespace SceneGraph { +RenderTaskList* RenderTaskList::New() +{ + return new(gRenderTaskListMemoryPool.AllocateRawThreadSafe()) RenderTaskList(); +} + +RenderTaskList::RenderTaskList() +: mNotificationObject(nullptr), + mRenderMessageDispatcher(nullptr) +{ +} -RenderTaskList::RenderTaskList( RenderMessageDispatcher& renderMessageDispatcher ) -: mNotificationObject( NULL ), - mRenderMessageDispatcher( renderMessageDispatcher ) +RenderTaskList::~RenderTaskList() = default; + +void RenderTaskList::operator delete(void* ptr) { + gRenderTaskListMemoryPool.FreeThreadSafe(static_cast(ptr)); } -RenderTaskList::~RenderTaskList() +void RenderTaskList::SetRenderMessageDispatcher(RenderMessageDispatcher* renderMessageDispatcher) { + mRenderMessageDispatcher = renderMessageDispatcher; } -void RenderTaskList::AddTask( RenderTask* newTask ) +void RenderTaskList::AddTask(OwnerPointer& newTask) { - DALI_ASSERT_DEBUG( newTask != NULL && "SceneGraph RenderTask is null"); + DALI_ASSERT_DEBUG(newTask && "SceneGraph RenderTask is null"); + DALI_ASSERT_DEBUG(mRenderMessageDispatcher != NULL && "RenderMessageDispatcher is null"); + newTask->Initialize(*mRenderMessageDispatcher); // mRenderTasks container takes ownership - mRenderTasks.PushBack( newTask ); - newTask->Initialize( mRenderMessageDispatcher ); + mRenderTasks.PushBack(newTask.Release()); } -void RenderTaskList::RemoveTask( RenderTask* task ) +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 } } } +uint32_t RenderTaskList::GetTaskCount() +{ + return static_cast(mRenderTasks.Count()); +} + RenderTaskList::RenderTaskContainer& RenderTaskList::GetTasks() { return mRenderTasks; @@ -74,15 +97,13 @@ 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; }