X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;ds=sidebyside;f=dali%2Finternal%2Fupdate%2Frender-tasks%2Fscene-graph-render-task-list.h;h=6f1c3207b46fd28a4761d794bf0c4ffe8c47091b;hb=4d75040ab200bd306ec5a48f2a617480062eef4c;hp=ad40d2d520ef6ec1dc14e1737ddb683d213e8608;hpb=783cf777ff0e903754ffea8452867e9c225c0aee;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/update/render-tasks/scene-graph-render-task-list.h b/dali/internal/update/render-tasks/scene-graph-render-task-list.h index ad40d2d..6f1c320 100644 --- a/dali/internal/update/render-tasks/scene-graph-render-task-list.h +++ b/dali/internal/update/render-tasks/scene-graph-render-task-list.h @@ -2,7 +2,7 @@ #define __DALI_INTERNAL_SCENE_GRAPH_RENDER_TASK_LIST_H__ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2017 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,8 +19,8 @@ */ // INTERNAL INCLUDES +#include #include -#include #include namespace Dali @@ -28,12 +28,12 @@ namespace Dali namespace Internal { -class CompleteStatusManager; + class CompleteNotificationInterface; namespace SceneGraph { - +class RenderMessageDispatcher; class RenderTask; /** @@ -47,8 +47,9 @@ public: /** * Constructor + * @param renderMessageDispatcher to send messages */ - RenderTaskList( CompleteStatusManager& completeStatusManager ); + RenderTaskList( RenderMessageDispatcher& renderMessageDispatcher ); /** * Destructor @@ -59,7 +60,7 @@ public: * Add a new RenderTask to the list. * @param[in] newTask The RenderTaskList takes ownership of this task. */ - void AddTask( RenderTask* newTask ); + void AddTask( OwnerPointer< RenderTask >& newTask ); /** * Remove a RenderTask from the list. @@ -101,22 +102,23 @@ private: private: CompleteNotificationInterface* mNotificationObject; ///< object to pass in to the complete notification + RenderMessageDispatcher& mRenderMessageDispatcher; ///< for sending messages to render thread RenderTaskContainer mRenderTasks; ///< A container of owned RenderTasks - CompleteStatusManager& mCompleteStatusManager; ///< The complete status tracker (render tasks need this) }; // Messages for RenderTaskList -inline void AddTaskMessage( EventThreadServices& eventThreadServices, RenderTaskList& list, RenderTask& task ) +inline void AddTaskMessage( EventThreadServices& eventThreadServices, RenderTaskList& list, OwnerPointer< RenderTask >& task ) { - typedef MessageValue1< RenderTaskList, RenderTask* > LocalType; + // Message has ownership of the RenderTask while in transit from event -> update + typedef MessageValue1< RenderTaskList, OwnerPointer< RenderTask > > LocalType; // Reserve some memory inside the message queue unsigned int* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) ); // Construct message in the message queue memory; note that delete should not be called on the return value - new (slot) LocalType( &list, &RenderTaskList::AddTask, &task ); + new (slot) LocalType( &list, &RenderTaskList::AddTask, task ); } inline void RemoveTaskMessage( EventThreadServices& eventThreadServices, RenderTaskList& list, const RenderTask& constTask )