Removed forward declaration of (removed) FrameBufferTexture
[platform/core/uifw/dali-core.git] / dali / internal / update / render-tasks / scene-graph-render-task.h
index b8d6e2f..99ed6c1 100644 (file)
@@ -2,7 +2,7 @@
 #define __DALI_INTERNAL_SCENE_GRAPH_RENDER_TASK_H__
 
 /*
- * Copyright (c) 2016 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.
 #include <dali/internal/event/common/event-thread-services.h>
 #include <dali/internal/update/common/property-owner.h>
 #include <dali/internal/update/common/animatable-property.h>
+#include <dali/internal/render/renderers/render-frame-buffer.h>
 
 namespace Dali
 {
 
 namespace Internal
 {
-class FrameBufferTexture;
-class ResourceManager;
 
 namespace Render
 {
@@ -75,9 +74,8 @@ public:
   /**
    * Initialize the render task. Called in update thread
    * @param[in] renderMessageDispatcher to send messages to render thread
-   * @param[in] resourceManager to check and update status of FBOs
    */
-  void Initialize( RenderMessageDispatcher& renderMessageDispatcher, ResourceManager& resourceManager );
+  void Initialize( RenderMessageDispatcher& renderMessageDispatcher );
 
   /**
    * Set the nodes to be rendered.
@@ -124,6 +122,18 @@ public:
   unsigned int GetFrameBufferId() const;
 
   /**
+   * Set the frame-buffer used as a render target.
+   * @param[in] frameBuffer The framebuffer
+   */
+  void SetFrameBuffer( Render::FrameBuffer* frameBuffer );
+
+  /**
+   * Retrieve the resource ID of the frame-buffer.
+   * @return The resource ID, or zero if not rendering off-screen.
+   */
+  Render::FrameBuffer* GetFrameBuffer();
+
+  /**
    * Set the value of property viewportPosition
    * This value will persist only for the current frame.
    * @param[in] updateBufferIndex The current update buffer index.
@@ -258,12 +268,6 @@ public:
   bool IsRenderRequired();
 
   /**
-   * Set whether all resources were available when the render-task was processed
-   * @param[in] resourcesComplete True if the resources of the source tree are completely loaded.
-   */
-  void SetResourcesFinished( bool resourcesFinished );
-
-  /**
    * Process a frame. This method is called each frame for every ready render task, regardless
    * of whether it needs to render (so that the frame counter can be updated).
    */
@@ -359,44 +363,37 @@ public: // Animatable Properties
 
 private:
   RenderMessageDispatcher* mRenderMessageDispatcher;
-  ResourceManager* mResourceManager;
   Render::RenderTracker* mRenderSyncTracker;
   Node* mSourceNode;
   Node* mCameraNode;
   SceneGraph::Camera* mCamera;
-  unsigned int mFrameBufferResourceId;
+  Render::FrameBuffer* mFrameBuffer;
 
-  bool mResourcesFinished:1; ///< True if all resources were available when the render-task was processed
   bool mWaitingToRender:1; ///< True when an render once to FBO is waiting
   bool mNotifyTrigger:1; ///< True if a render once render task has finished renderering
   bool mExclusive: 1; ///< Whether the render task has exclusive access to the source actor (node in the scene graph implementation).
   bool mClearEnabled: 1; ///< Whether previous results are cleared.
   bool mCullMode: 1; ///< Whether renderers should be frustum culled
 
-  FrameBufferTexture* mRenderTarget;
-  Viewport mViewport;
-
   State mState;                     ///< Render state.
   unsigned int mRefreshRate;        ///< REFRESH_ONCE, REFRESH_ALWAYS or render every N frames
   unsigned int mFrameCounter;       ///< counter for rendering every N frames
 
   unsigned int mRenderedOnceCounter;  ///< Incremented whenever state changes to RENDERED_ONCE_AND_NOTIFIED
-  bool mTargetIsNativeFramebuffer; ///< Tells if our target is a native framebuffer
   bool mRequiresSync;              ///< Whether sync is needed to track the render
 
 };
 
 // Messages for RenderTask
-
-inline void SetFrameBufferIdMessage( EventThreadServices& eventThreadServices, RenderTask& task, unsigned int resourceId, bool isNativeFBO )
+inline void SetFrameBufferMessage( EventThreadServices& eventThreadServices, RenderTask& task, Render::FrameBuffer* frameBuffer )
 {
-  typedef MessageValue2< RenderTask, unsigned int, bool > LocalType;
+  typedef MessageValue1< RenderTask, Render::FrameBuffer*> 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( &task, &RenderTask::SetFrameBufferId, resourceId, isNativeFBO );
+  new (slot) LocalType( &task, &RenderTask::SetFrameBuffer, frameBuffer );
 }
 
 inline void SetClearColorMessage( EventThreadServices& eventThreadServices, RenderTask& task, const Vector4& value )