Sync test harness 83/293383/3
authorHeeyong Song <heeyong.song@samsung.com>
Thu, 25 May 2023 09:16:19 +0000 (18:16 +0900)
committerHeeyong Song <heeyong.song@samsung.com>
Tue, 30 May 2023 01:22:03 +0000 (10:22 +0900)
Change-Id: Ia4081494e429aa3674402fb8b39f7e7f8c83a417

automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-application.cpp
automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-application.h
automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-test-application.cpp

index a8354e8..47487e2 100644 (file)
@@ -85,6 +85,8 @@ void TestApplication::CreateScene()
   rtInfo.SetSurface(&mSurfaceWidth); // Can point to anything, really.
 
   mScene.SetSurfaceRenderTarget(rtInfo);
+
+  mScenes.push_back(mScene);
 }
 
 void TestApplication::InitializeCore()
@@ -212,8 +214,11 @@ bool TestApplication::Render(uint32_t intervalMilliseconds, const char* location
   mCore->PreRender(mRenderStatus, false /*do not force clear*/);
   if(!uploadOnly)
   {
-    mCore->RenderScene(mRenderStatus, mScene, true /*render the off-screen buffers*/);
-    mCore->RenderScene(mRenderStatus, mScene, false /*render the surface*/);
+    for(auto&& scene : mScenes)
+    {
+      mCore->RenderScene(mRenderStatus, scene, true /*render the off-screen buffers*/);
+      mCore->RenderScene(mRenderStatus, scene, false /*render the surface*/);
+    }
   }
   mCore->PostRender();
 
@@ -243,6 +248,36 @@ bool TestApplication::RenderWithPartialUpdate(std::vector<Rect<int>>& damagedRec
   return mStatus.KeepUpdating() || mRenderStatus.NeedsUpdate();
 }
 
+bool TestApplication::RenderWithPartialUpdate(uint32_t intervalMilliseconds, const char* location)
+{
+  DoUpdate(intervalMilliseconds, location);
+
+  // Reset the status
+  mRenderStatus.SetNeedsUpdate(false);
+  mRenderStatus.SetNeedsPostRender(false);
+
+  mCore->PreRender(mRenderStatus, false /*do not force clear*/);
+
+  for(auto&& scene : mScenes)
+  {
+    std::vector<Rect<int>> damagedRects;
+    Rect<int>              clippingRect{};
+
+    mCore->PreRender(scene, damagedRects);
+    mCore->RenderScene(mRenderStatus, scene, true /*render the off-screen buffers*/);
+    for(auto&& iter : damagedRects)
+    {
+      clippingRect.Merge(iter);
+    }
+    mCore->RenderScene(mRenderStatus, scene, false /*render the surface*/, clippingRect);
+  }
+  mCore->PostRender();
+
+  mFrame++;
+
+  return mStatus.KeepUpdating() || mRenderStatus.NeedsUpdate();
+}
+
 uint32_t TestApplication::GetUpdateStatus()
 {
   return mStatus.KeepUpdating();
@@ -297,4 +332,14 @@ uint32_t TestApplication::Wait(uint32_t durationToWait)
   return time;
 }
 
+void TestApplication::AddScene(Integration::Scene scene)
+{
+  mScenes.push_back(scene);
+}
+
+void TestApplication::RemoveScene(Integration::Scene scene)
+{
+  mScenes.erase(std::remove(mScenes.begin(), mScenes.end(), scene), mScenes.end());
+}
+
 } // namespace Dali
index ce0e151..5e86b3c 100644 (file)
@@ -75,6 +75,7 @@ public:
   bool        Render(uint32_t intervalMilliseconds = DEFAULT_RENDER_INTERVAL, const char* location = NULL, bool uploadOnly = false);
   bool        PreRenderWithPartialUpdate(uint32_t intervalMilliseconds, const char* location, std::vector<Rect<int>>& damagedRects);
   bool        RenderWithPartialUpdate(std::vector<Rect<int>>& damagedRects, Rect<int>& clippingRect);
+  bool        RenderWithPartialUpdate(uint32_t intervalMilliseconds, const char* location = NULL);
   uint32_t    GetUpdateStatus();
   bool        UpdateOnly(uint32_t intervalMilliseconds = DEFAULT_RENDER_INTERVAL);
   bool        RenderOnly();
@@ -92,6 +93,9 @@ public:
     return mScene;
   }
 
+  void AddScene(Integration::Scene scene);
+  void RemoveScene(Integration::Scene scene);
+
 private:
   void DoUpdate(uint32_t intervalMilliseconds, const char* location = NULL, bool uploadOnly = false);
 
@@ -103,8 +107,9 @@ protected:
   Integration::UpdateStatus mStatus;
   Integration::RenderStatus mRenderStatus;
 
-  Integration::Core*       mCore;
-  Dali::Integration::Scene mScene;
+  Integration::Core*              mCore;
+  Dali::Integration::Scene        mScene;
+  std::vector<Integration::Scene> mScenes;
 
   uint32_t mSurfaceWidth;
   uint32_t mSurfaceHeight;
index 07b1013..1e36828 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2023 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.
@@ -50,6 +50,8 @@ ToolkitTestApplication::ToolkitTestApplication(size_t surfaceWidth, size_t surfa
   rtInfo.SetExtent({mSurfaceWidth, mSurfaceHeight});
   mScene.SetSurfaceRenderTarget(rtInfo);
 
+  mScenes.push_back(mScene);
+
   // Core needs to be initialized next before we start the adaptor
   InitializeCore();
   Accessibility::Accessible::SetObjectRegistry(mCore->GetObjectRegistry());