Merge "DALi Version 1.0.31" into tizen
[platform/core/uifw/dali-core.git] / dali / internal / update / render-tasks / scene-graph-render-task.cpp
index 27acf09..8ed7f74 100644 (file)
 
 #include <dali/internal/update/render-tasks/scene-graph-render-task-debug.h>
 
-namespace
-{
-const unsigned int NUM_FRAMES_BEFORE_NOTIFY_FINISHED(3);
-const unsigned int COUNTDOWN_COMPLETE(-1);
-} // anonymous namespace
-
 namespace Dali
 {
 namespace Internal
@@ -246,6 +240,10 @@ unsigned int RenderTask::GetRefreshRate() const
 
 bool RenderTask::ReadyToRender( BufferIndex updateBufferIndex )
 {
+  // If the source node of the render task is invisible we should still render
+  // We want the render task to complete and possible clear colors to happen
+
+  // Check source node
   if ( NULL == mSourceNode ||
        ( !mSourceNode->IsRoot() && NULL == mSourceNode->GetParent() ) )
   {
@@ -255,13 +253,7 @@ bool RenderTask::ReadyToRender( BufferIndex updateBufferIndex )
     return false;
   }
 
-  // Check if the source node (root actor) and all its ancestors are visible.
-  if( !mSourceNode->IsFullyVisible( updateBufferIndex ) )
-  {
-    TASK_LOG_FMT(Debug::General, " =F  No visible source  FC:%d\n", mFrameCounter );
-    return false;
-  }
-
+  // Check camera node
   if ( NULL == mCameraNode ||
        NULL == mCameraNode->GetParent() ||
        !mCameraNode->HasAttachment() )
@@ -300,11 +292,16 @@ bool RenderTask::IsRenderRequired()
   return required;
 }
 
+void RenderTask::SetResourcesFinished( bool resourcesFinished )
+{
+  mResourcesFinished = resourcesFinished;
+}
+
 // Called every frame regardless of whether render was required.
 // If render was not required, ignore resourcesFinished.
-void RenderTask::UpdateState(bool resourcesFinished)
+void RenderTask::UpdateState()
 {
-  TASK_LOG_FMT( Debug::General, "(resourcesFinished:%s)  FC:%d State:%s RR:%d\n", resourcesFinished?"T":"F", mFrameCounter, STATE_STRING(mState), mRefreshRate );
+  TASK_LOG_FMT( Debug::General, "(mResourcesFinished:%s)  FC:%d State:%s RR:%d\n", mResourcesFinished?"T":"F", mFrameCounter, STATE_STRING(mState), mRefreshRate );
 
   switch( mState )
   {
@@ -314,12 +311,12 @@ void RenderTask::UpdateState(bool resourcesFinished)
       {
         if( mFrameCounter == 0 )
         {
-          if( resourcesFinished )
+          if( mResourcesFinished )
           {
-            ++mFrameCounter; // Only start missing frames when resources are loaded
+            ++mFrameCounter; // Only start skipping frames when resources are loaded
           }
         }
-        else // Continue counting to miss frames
+        else // Continue counting to skip frames
         {
           ++mFrameCounter;
           if( mFrameCounter >= mRefreshRate )
@@ -334,7 +331,7 @@ void RenderTask::UpdateState(bool resourcesFinished)
 
     case RENDER_ONCE_WAITING_FOR_RESOURCES:
     {
-      if( resourcesFinished )
+      if( mResourcesFinished )
       {
         mState = RENDERED_ONCE;
       }
@@ -487,6 +484,11 @@ bool RenderTask::GetViewportEnabled( BufferIndex bufferIndex ) const
   return false;
 }
 
+Node* RenderTask::GetCamera() const
+{
+  return mCameraNode;
+}
+
 void RenderTask::ResetDefaultProperties( BufferIndex updateBufferIndex )
 {
   // Reset default properties
@@ -504,6 +506,7 @@ RenderTask::RenderTask()
   mCameraNode( NULL ),
   mCameraAttachment( NULL ),
   mFrameBufferResourceId( 0 ),
+  mResourcesFinished( false ),
   mWaitingToRender( false ),
   mNotifyTrigger( false ),
   mExclusive( Dali::RenderTask::DEFAULT_EXCLUSIVE ),