-#ifndef __DALI_INTERNAL_RENDER_TASK_LIST_H__
-#define __DALI_INTERNAL_RENDER_TASK_LIST_H__
+#ifndef DALI_INTERNAL_RENDER_TASK_LIST_H
+#define DALI_INTERNAL_RENDER_TASK_LIST_H
/*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2019 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.
// INTERNAL INCLUDES
#include <dali/public-api/common/vector-wrapper.h>
#include <dali/public-api/object/base-object.h>
-#include <dali/public-api/render-tasks/render-task.h>
#include <dali/public-api/render-tasks/render-task-list.h>
#include <dali/internal/event/common/complete-notification-interface.h>
+#include <dali/internal/event/render-tasks/render-task-impl.h>
+#include <dali/internal/event/events/actor-observer.h>
namespace Dali
{
class EventThreadServices;
class RenderTaskDefaults;
class Actor;
+class CameraActor;
+
+using RenderTaskPtr = IntrusivePtr<RenderTask>;
+class RenderTaskList;
+using RenderTaskListPtr = IntrusivePtr<RenderTaskList>;
namespace SceneGraph
{
{
public:
- typedef std::vector< Dali::RenderTask > RenderTaskContainer;
+ using RenderTaskContainer = std::vector< RenderTaskPtr >;
struct Exclusive
{
RenderTask* renderTaskPtr; ///< Pointer for comparison with current rendertask.
- Actor* actorPtr; ///< Pointer for comparison with current actor.
+ ActorObserver actor; ///< For comparison with current actor.
};
+ using ExclusivesContainer = std::vector< Exclusive >;
+
/**
* Create a RenderTaskList.
- * @param[in] eventServices Used for sending message to the scene graph.
- * @param[in] defaults Provides the default source & camera actors.
- * @param[in] systemLevel True if this is the LayerList for actors added via the SystemLevel::Add().
* @return A newly allocated RenderTaskList; the caller takes ownership.
*/
- static RenderTaskList* New( EventThreadServices& eventServices, RenderTaskDefaults& defaults, bool systemLevel );
+ static RenderTaskListPtr New();
/**
* @copydoc Dali::RenderTaskList::CreateTask()
*/
- Dali::RenderTask CreateTask();
+ RenderTaskPtr CreateTask();
+
+ /**
+ * @brief Creates a new RenderTask.
+ *
+ * This will be appended to the list of render-tasks.
+ *
+ * @param[in] sourceActor The actor and its children to be rendered for this render task.
+ * @param[in] cameraActor The actor from which the scene is viewed for this render task.
+ * @return A valid handle to a new RenderTask
+ */
+ RenderTaskPtr CreateTask( Actor* sourceActor, CameraActor* cameraActor);
/**
* @copydoc Dali::RenderTaskList::RemoveTask()
*/
- void RemoveTask( Dali::RenderTask task );
+ void RemoveTask( Internal::RenderTask& task );
/**
* @copydoc Dali::RenderTaskList::GetTaskCount()
*/
- unsigned int GetTaskCount() const;
+ uint32_t GetTaskCount() const;
/**
* @copydoc Dali::RenderTaskList::GetTask()
*/
- Dali::RenderTask GetTask( unsigned int index ) const;
+ RenderTaskPtr GetTask( uint32_t index ) const;
/**
* Retrieve the container of render-tasks.
*
* @return [description]
*/
- const Vector< Exclusive >& GetExclusivesList() const
+ const ExclusivesContainer& GetExclusivesList() const
{
return mExclusives;
}
*/
void RecoverFromContextLoss();
+ /**
+ * Retrieve the SceneGraph::RenderTaskList object.
+ * @return The RenderTaskList.
+ */
+ const SceneGraph::RenderTaskList& GetSceneObject() const;
+
protected:
/**
* Construct a new RenderTaskList.
- * @param[in] eventThreadServices Used for creating render-tasks in the scene graph.
- * @param[in] defaults Provides the default source & camera actors.
- * @param[in] systemLevel True if this is the system-level list.
*/
- RenderTaskList( EventThreadServices& eventThreadServices, RenderTaskDefaults& defaults, bool systemLevel );
+ RenderTaskList();
/**
* A reference counted object may only be deleted by calling Unreference()
/**
* 2nd-phase construction
*/
- void Initialize( SceneGraph::UpdateManager& updateManager );
+ void Initialize();
private: // from CompleteNotificationInterface
EventThreadServices& mEventThreadServices;
RenderTaskDefaults& mDefaults;
- bool mIsSystemLevel; ///< True if the layers are added via the SystemLevel API
-
SceneGraph::RenderTaskList* mSceneObject; ///< Raw-pointer to the scene-graph object; not owned.
RenderTaskContainer mTasks; ///< Reference counted render-tasks
- Vector< Exclusive > mExclusives; ///< List of rendertasks with exclusively owned source actors.
+ ExclusivesContainer mExclusives; ///< List of rendertasks with exclusively owned source actors.
};
} // namespace Internal
} // namespace Dali
-#endif //__DALI_INTERNAL_RENDER_TASK_LIST_H__
+#endif // DALI_INTERNAL_RENDER_TASK_LIST_H