/*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
}
}
}
-
- // Reset updated flag from the root
- Layer* sourceLayer = renderList->GetSourceLayer();
- if(sourceLayer)
- {
- sourceLayer->SetUpdatedTree(false);
- }
}
}
}
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)
#define DALI_INTERNAL_SCENE_GRAPH_SCENE_H
/*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
#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
}
/**
+ * @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;
+ }
+
+ /**
* @brief Get ItemsDirtyRects
*
* @return the ItemsDirtyRects
Graphics::UniquePtr<Graphics::RenderPass> mRenderPassNoClear{nullptr}; ///< The render pass created to render the surface without clearing color
Graphics::UniquePtr<Graphics::RenderTarget> mRenderTarget{nullptr}; ///< This is created in Update/Render thread when surface is created/resized/replaced
+ SceneGraph::Layer* mRoot{nullptr}; ///< Root node
+
std::vector<Graphics::ClearValue> mClearValues{}; ///< Clear colors
std::vector<Dali::Internal::SceneGraph::DirtyRect> mItemsDirtyRects{}; ///< Dirty rect list
};
/*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
void UpdateManager::AddScene(OwnerPointer<Scene>& scene)
{
- mImpl->scenes.back()->scene = scene.Release();
+ auto& sceneInfo = mImpl->scenes.back();
+ sceneInfo->scene = scene.Release();
+
+ // Set root to the Scene
+ sceneInfo->scene->SetRoot(sceneInfo->root);
// Initialize the context from render manager
typedef MessageValue1<RenderManager, SceneGraph::Scene*> DerivedType;
uint32_t* slot = mImpl->renderQueue.ReserveMessageSlot(mSceneGraphBuffers.GetUpdateBufferIndex(), sizeof(DerivedType));
// Construct message in the render queue memory; note that delete should not be called on the return value
- SceneGraph::Scene& sceneObject = *mImpl->scenes.back()->scene;
+ SceneGraph::Scene& sceneObject = *sceneInfo->scene;
new(slot) DerivedType(&mImpl->renderManager, &RenderManager::InitializeScene, &sceneObject);
}