[Tizen] Add codes for Dali Windows Backend
[platform/core/uifw/dali-core.git] / dali / internal / update / render-tasks / scene-graph-render-task-list.h
index 711d32f..6f1c320 100644 (file)
@@ -2,7 +2,7 @@
 #define __DALI_INTERNAL_SCENE_GRAPH_RENDER_TASK_LIST_H__
 
 /*
- * Copyright (c) 2015 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.
@@ -28,7 +28,7 @@ namespace Dali
 
 namespace Internal
 {
-class ResourceManager;
+
 class CompleteNotificationInterface;
 
 namespace SceneGraph
@@ -48,9 +48,8 @@ public:
   /**
    * Constructor
    * @param renderMessageDispatcher to send messages
-   * @param resourceManager to pass to render tasks
    */
-  RenderTaskList( RenderMessageDispatcher& renderMessageDispatcher, ResourceManager& resourceManager );
+  RenderTaskList( RenderMessageDispatcher& renderMessageDispatcher );
 
   /**
    * Destructor
@@ -61,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.
@@ -104,22 +103,22 @@ private:
 
   CompleteNotificationInterface* mNotificationObject; ///< object to pass in to the complete notification
   RenderMessageDispatcher& mRenderMessageDispatcher; ///< for sending messages to render thread
-  ResourceManager& mResourceManager; ///< The resource manager (render tasks need this)
   RenderTaskContainer mRenderTasks; ///< A container of owned RenderTasks
 
 };
 
 // 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 )