[Tizen] Update RenderState in PreRender 72/267072/1
authorHeeyong Song <heeyong.song@samsung.com>
Fri, 12 Nov 2021 09:08:54 +0000 (18:08 +0900)
committerHeeyong Song <heeyong.song@samsung.com>
Thu, 25 Nov 2021 04:16:30 +0000 (13:16 +0900)
Change-Id: I2da4ae913ecbf48ec288b59c21beb1d74a9e973d

automated-tests/src/dali/dali-test-suite-utils/test-application.cpp
dali/integration-api/core.cpp
dali/integration-api/core.h
dali/internal/common/core-impl.cpp
dali/internal/common/core-impl.h
dali/internal/render/common/render-manager.cpp
dali/internal/render/common/render-manager.h

index 440270a..e71166b 100644 (file)
@@ -220,7 +220,7 @@ bool TestApplication::PreRenderWithPartialUpdate(uint32_t intervalMilliseconds,
   DoUpdate(intervalMilliseconds, location);
 
   mCore->PreRender(mRenderStatus, false /*do not force clear*/, false /*do not skip rendering*/);
-  mCore->PreRender(mScene, damagedRects);
+  mCore->PreRender(mRenderStatus, mScene, damagedRects);
 
   return mStatus.KeepUpdating() || mRenderStatus.NeedsUpdate();
 }
index 99001f3..36b6319 100644 (file)
@@ -110,9 +110,9 @@ void Core::PreRender(RenderStatus& status, bool forceClear, bool uploadOnly)
   mImpl->PreRender(status, forceClear, uploadOnly);
 }
 
-void Core::PreRender(Integration::Scene& scene, std::vector<Rect<int>>& damagedRects)
+void Core::PreRender(RenderStatus& status, Integration::Scene& scene, std::vector<Rect<int>>& damagedRects)
 {
-  mImpl->PreRender(scene, damagedRects);
+  mImpl->PreRender(status, scene, damagedRects);
 }
 
 void Core::RenderScene(RenderStatus& status, Integration::Scene& scene, bool renderToFbo)
index 1dd070d..a5051e5 100644 (file)
@@ -351,7 +351,7 @@ public:
    * @param[in] scene The scene to be rendered.
    * @param[out] damagedRects containing damaged render items rects for this pass.
    */
-  void PreRender(Integration::Scene& scene, std::vector<Rect<int>>& damagedRects);
+  void PreRender(RenderStatus& status, Integration::Scene& scene, std::vector<Rect<int>>& damagedRects);
 
   /**
    * Render a scene in the next frame. This method should be preceded by a call up PreRender.
index 3b50a24..8402dd6 100644 (file)
@@ -211,9 +211,9 @@ void Core::PreRender(RenderStatus& status, bool forceClear, bool uploadOnly)
   mRenderManager->PreRender(status, forceClear, uploadOnly);
 }
 
-void Core::PreRender(Integration::Scene& scene, std::vector<Rect<int>>& damagedRects)
+void Core::PreRender(RenderStatus& status, Integration::Scene& scene, std::vector<Rect<int>>& damagedRects)
 {
-  mRenderManager->PreRender(scene, damagedRects);
+  mRenderManager->PreRender(status, scene, damagedRects);
 }
 
 void Core::RenderScene(RenderStatus& status, Integration::Scene& scene, bool renderToFbo)
index 9744d0d..7c6cb29 100644 (file)
@@ -135,7 +135,7 @@ public:
   /**
    * @copydoc Dali::Integration::Core::PreRender()
    */
-  void PreRender(Integration::Scene& scene, std::vector<Rect<int>>& damagedRects);
+  void PreRender(Integration::RenderStatus& status, Integration::Scene& scene, std::vector<Rect<int>>& damagedRects);
 
   /**
    * @copydoc Dali::Integration::Core::RenderScene()
index 3c9f87c..d157b76 100644 (file)
@@ -466,7 +466,7 @@ void RenderManager::PreRender(Integration::RenderStatus& status, bool forceClear
   }
 }
 
-void RenderManager::PreRender(Integration::Scene& scene, std::vector<Rect<int>>& damagedRects)
+void RenderManager::PreRender(Integration::RenderStatus& status, Integration::Scene& scene, std::vector<Rect<int>>& damagedRects)
 {
   if(mImpl->partialUpdateAvailable != Integration::PartialUpdateAvailable::TRUE)
   {
@@ -479,9 +479,12 @@ void RenderManager::PreRender(Integration::Scene& scene, std::vector<Rect<int>>&
   if(sceneObject->IsRenderingSkipped())
   {
     // We don't need to calculate dirty rects
+    status.SetNeedsUpdate(false);
     return;
   }
 
+  status.SetNeedsUpdate(true);
+
   class DamagedRectsCleaner
   {
   public:
index 8b96203..54ed12d 100644 (file)
@@ -337,7 +337,7 @@ public:
    * @param[in] scene The scene to be rendered.
    * @param[out] damagedRects The list of damaged rects for the current render pass.
    */
-  void PreRender(Integration::Scene& scene, std::vector<Rect<int>>& damagedRects);
+  void PreRender(Integration::RenderStatus& status, Integration::Scene& scene, std::vector<Rect<int>>& damagedRects);
 
   // This method should be called from Core::RenderScene()