/*
- * 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.
rtInfo.SetSurface(&mSurfaceWidth); // Can point to anything, really.
mScene.SetSurfaceRenderTarget(rtInfo);
+
+ mScenes.push_back(mScene);
}
void TestApplication::InitializeCore()
delete mCore;
}
-void TestApplication::LogContext(bool start, const char* tag)
+void TestApplication::LogContext(bool start, const char* tag, const char* message)
{
if(start)
{
- fprintf(stderr, "INFO: Trace Start: %s\n", tag);
+ fprintf(stderr, "INFO: Trace Start: %s %s\n", tag, message ? message : "");
}
else
{
- fprintf(stderr, "INFO: Trace End: %s\n", tag);
+ fprintf(stderr, "INFO: Trace End: %s %s\n", tag, message ? message : "");
}
}
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();
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();
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