END_TEST;
}
-int UtcDaliCoreRemoveSceneObjectAndClearSceneN(void)
-{
- TestApplication application;
- tet_infoline("Testing Dali::Integration::Core::ClearScene with scene object removed scene");
-
- application.GetScene().SetBackgroundColor(Color::MAGENTA);
-
- // Dummy rendering several frames.
- application.SendNotification();
- application.Render();
- application.SendNotification();
- application.Render();
-
- Dali::Integration::Scene newScene = Dali::Integration::Scene::New(Size(480.0f, 800.0f));
- DALI_TEST_CHECK(newScene);
- application.AddScene(newScene);
-
- // Dummy rendering several frames.
- application.SendNotification();
- application.Render();
- application.SendNotification();
- application.Render();
-
- TestGraphicsController& controller = application.GetGraphicsController();
- auto& cmdTrace = controller.mCommandBufferCallStack;
-
- cmdTrace.Enable(true);
- cmdTrace.EnableLogging(true);
-
- cmdTrace.Reset();
-
- DALI_TEST_CHECK(!cmdTrace.FindMethod("BeginRenderPass"));
-
- auto& core = application.GetCore();
-
- // Create BeginRenderPass both scenes
- core.ClearScene(newScene);
- DALI_TEST_CHECK(cmdTrace.FindMethod("BeginRenderPass"));
- cmdTrace.Reset();
-
- core.ClearScene(application.GetScene());
- DALI_TEST_CHECK(cmdTrace.FindMethod("BeginRenderPass"));
-
- // Dummy rendering several frames.
- application.SendNotification();
- application.Render();
- application.SendNotification();
- application.Render();
-
- cmdTrace.Reset();
-
- newScene.RemoveSceneObject(); // Scene's scene graph lifecycle is NOT managed by scene handle
-
- DALI_TEST_CHECK(!cmdTrace.FindMethod("BeginRenderPass"));
-
- // Do not create BeginRenderPass for invalid scene
- core.ClearScene(newScene);
- DALI_TEST_CHECK(!cmdTrace.FindMethod("BeginRenderPass"));
-
- core.ClearScene(application.GetScene());
- DALI_TEST_CHECK(cmdTrace.FindMethod("BeginRenderPass"));
-
- cmdTrace.Reset();
-
- newScene.Discard();
- newScene.Reset();
-
- application.SendNotification();
- application.Render(0);
-
- END_TEST;
-}
-
int UtcDaliCoreClearSceneN(void)
{
TestApplication application;
if(!sceneObject)
{
// May not be a scene object if the window is being removed.
- DALI_LOG_ERROR("Scene was empty handle. Skip PreRenderScene\n");
return;
}
return;
}
- if(sceneObject->IsRenderingSkipped())
+ if(!sceneObject || sceneObject->IsRenderingSkipped())
{
// We don't need to calculate dirty rects
- DALI_LOG_RELEASE_INFO("RenderingSkipped was set true. Skip pre-rendering\n");
+ if(!sceneObject)
+ {
+ DALI_LOG_ERROR("Scene was empty handle. Skip pre-rendering\n");
+ }
+ else
+ {
+ DALI_LOG_RELEASE_INFO("RenderingSkipped was set true. Skip pre-rendering\n");
+ }
return;
}
{
RenderItem& item = renderList->GetItem(listIndex);
- // For now, we don't allow to rendering nodeless renderer.
- DALI_ASSERT_DEBUG(item.mNode && "RenderItem should have node!");
-
// Get NodeInformation as const l-value, to reduce memory access operations.
const SceneGraph::PartialRenderingData::NodeInfomations& nodeInfo = item.GetPartialRenderingDataNodeInfomations();
DirtyRectKey dirtyRectKey(item.mNode, item.mRenderer);
// If the item refers to updated node or renderer.
if(item.mIsUpdated ||
- (item.mNode->Updated() || (item.mRenderer && item.mRenderer->Updated())))
+ (item.mNode &&
+ (item.mNode->Updated() || (item.mRenderer && item.mRenderer->Updated()))))
{
item.mIsUpdated = false; /// DevNote : Reset flag here, since RenderItem could be reused by renderList.ReuseCachedItems().
SceneGraph::Scene* sceneObject = sceneInternal.GetSceneObject();
if(!sceneObject)
{
- DALI_LOG_ERROR("Scene was empty handle. Skip ClearScene\n");
return;
}