[Tizen] (Partial update) Reset the updated flag after calculating all damaged area... 43/267143/1
authorHeeyong Song <heeyong.song@samsung.com>
Fri, 26 Nov 2021 08:23:41 +0000 (17:23 +0900)
committerHeeyong Song <heeyong.song@samsung.com>
Fri, 26 Nov 2021 08:23:41 +0000 (17:23 +0900)
Change-Id: I6abf26012f3053689abb461d42c2960b09886895

dali/internal/render/common/render-manager.cpp
dali/internal/update/common/scene-graph-scene.h
dali/internal/update/manager/update-manager.cpp
dali/internal/update/render-tasks/scene-graph-camera.cpp

index d157b76..b9cf368 100644 (file)
@@ -675,13 +675,6 @@ void RenderManager::PreRender(Integration::RenderStatus& status, Integration::Sc
               }
             }
           }
-
-          // Reset updated flag from the root
-          Layer* sourceLayer = renderList->GetSourceLayer();
-          if(sourceLayer)
-          {
-            sourceLayer->SetUpdatedTree(false);
-          }
         }
       }
     }
@@ -706,6 +699,13 @@ void RenderManager::PreRender(Integration::RenderStatus& status, Integration::Sc
 
   itemsDirtyRects.resize(j - itemsDirtyRects.begin());
   damagedRectCleaner.SetCleanOnReturn(false);
+
+  // Reset updated flag from the root
+  Layer* root = sceneObject->GetRoot();
+  if(root)
+  {
+    root->SetUpdatedTree(false);
+  }
 }
 
 void RenderManager::RenderScene(Integration::RenderStatus& status, Integration::Scene& scene, bool renderToFbo)
index 14bcb08..1413cbd 100644 (file)
@@ -24,6 +24,7 @@
 #include <dali/internal/common/message.h>
 #include <dali/internal/event/common/event-thread-services.h>
 #include <dali/internal/render/common/render-instruction-container.h>
+#include <dali/internal/update/nodes/scene-graph-layer.h>
 #include <dali/public-api/common/vector-wrapper.h>
 
 namespace Dali
@@ -213,6 +214,25 @@ public:
     return mClearValues;
   }
 
+  /**
+   * @brief Set a root of the Scene
+   *
+   * @param layer The root layer
+   */
+  void SetRoot(SceneGraph::Layer* layer)
+  {
+    mRoot = layer;
+  }
+
+  /**
+   * @brief Get a root of the Scene
+   * @return The root layer
+   */
+  SceneGraph::Layer* GetRoot() const
+  {
+    return mRoot;
+  }
+
 private:
   // Render instructions describe what should be rendered during RenderManager::RenderScene()
   // Update manager updates instructions for the next frame while we render the current one
@@ -224,9 +244,9 @@ private:
 
   bool mSkipRendering; ///< A flag to skip rendering
 
-  Rect<int32_t> mSurfaceRect;        ///< The rectangle of surface which is related ot this scene.
-  int32_t       mSurfaceOrientation; ///< The orientation of surface which is related of this scene
-  bool          mSurfaceRectChanged; ///< The flag of surface's rectangle is changed when is resized, moved or rotated.
+  Rect<int32_t> mSurfaceRect;                      ///< The rectangle of surface which is related ot this scene.
+  int32_t       mSurfaceOrientation;               ///< The orientation of surface which is related of this scene
+  bool          mSurfaceRectChanged;               ///< The flag of surface's rectangle is changed when is resized, moved or rotated.
   bool          mRotationCompletedAcknowledgement; ///< The flag of sending the acknowledgement to complete window rotation.
 
   // Render pass and render target
@@ -242,6 +262,8 @@ private:
 
   // clear colors
   std::vector<Graphics::ClearValue> mClearValues{};
+
+  SceneGraph::Layer* mRoot{nullptr}; ///< Root node (root is a layer). The layer is not stored in the node memory pool.
 };
 
 /// Messages
index c96b6ca..80e8be3 100644 (file)
@@ -482,6 +482,9 @@ void UpdateManager::AddScene(OwnerPointer<Scene>& scene)
 {
   mImpl->scenes.back()->scene = scene.Release();
 
+  // Set root to the Scene
+  mImpl->scenes.back()->scene->SetRoot(mImpl->scenes.back()->root);
+
   // Initialize the context from render manager
   typedef MessageValue1<RenderManager, SceneGraph::Scene*> DerivedType;
 
index cd3be71..f7b2b1c 100644 (file)
@@ -328,8 +328,8 @@ void Camera::SetReflectByPlane(const Vector4& plane)
 
 void Camera::RotateProjection(int rotationAngle)
 {
-  mProjectionRotation = rotationAngle;
-  mUpdateViewFlag     = UPDATE_COUNT;
+  mProjectionRotation   = rotationAngle;
+  mUpdateProjectionFlag = UPDATE_COUNT;
 }
 
 const Matrix& Camera::GetProjectionMatrix(BufferIndex bufferIndex) const