Revert "[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 ad40d2d..6f1c320 100644 (file)
@@ -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 <dali/devel-api/common/owner-container.h>
 #include <dali/internal/common/message.h>
-#include <dali/internal/common/owner-container.h>
 #include <dali/internal/event/common/event-thread-services.h>
 
 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 )