Scene3D::SceneView view = Scene3D::SceneView::New();
renderTaskCount = application.GetScene().GetRenderTaskList().GetTaskCount();
- DALI_TEST_EQUALS(2u, renderTaskCount, TEST_LOCATION);
-
- RenderTask renderTask = application.GetScene().GetRenderTaskList().GetTask(1u);
- CameraActor camera = renderTask.GetCameraActor();
+ DALI_TEST_EQUALS(1u, renderTaskCount, TEST_LOCATION);
application.GetScene().Add(view);
application.SendNotification();
application.Render();
+
+ renderTaskCount = application.GetScene().GetRenderTaskList().GetTaskCount();
+ DALI_TEST_EQUALS(2u, renderTaskCount, TEST_LOCATION);
+
+ RenderTask renderTask = application.GetScene().GetRenderTaskList().GetTask(1u);
+ CameraActor camera = renderTask.GetCameraActor();
+
CameraActor defaultCamera = renderTask.GetCameraActor();
DALI_TEST_CHECK(defaultCamera);
DALI_TEST_EQUALS(camera, defaultCamera, TEST_LOCATION);
END_TEST;
}
+
+int UtcDaliSceneViewCreateAndRemoveRenderTask(void)
+{
+ ToolkitTestApplication application;
+ RenderTaskList taskList = application.GetScene().GetRenderTaskList();
+
+ uint32_t renderTaskCount = taskList.GetTaskCount();
+
+ Scene3D::SceneView view = Scene3D::SceneView::New();
+ view.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f));
+
+ DALI_TEST_EQUALS(renderTaskCount, application.GetScene().GetRenderTaskList().GetTaskCount(), TEST_LOCATION);
+
+ application.GetScene().Add(view);
+
+ DALI_TEST_EQUALS(renderTaskCount + 1, application.GetScene().GetRenderTaskList().GetTaskCount(), TEST_LOCATION);
+
+ view.Unparent();
+
+ DALI_TEST_EQUALS(renderTaskCount, application.GetScene().GetRenderTaskList().GetTaskCount(), TEST_LOCATION);
+
+ END_TEST;
+}
Dali::RenderSurfaceInterface& GetRenderSurface();
+ Dali::RenderTaskList GetRenderTaskList();
+
protected:
TestRenderSurface mRenderSurface;
#include <dali/integration-api/adaptor-framework/adaptor.h>
#include <toolkit-adaptor-impl.h>
+#include <dali/public-api/render-tasks/render-task-list.h>
using AdaptorImpl = Dali::Internal::Adaptor::Adaptor;
return mRenderSurface;
}
+Dali::RenderTaskList SceneHolder::GetRenderTaskList()
+{
+ return mScene.GetRenderTaskList();
+}
+
} // namespace Adaptor
} // namespace Internal
#include <dali/public-api/actors/actor.h>
#include <dali/public-api/actors/layer.h>
#include <dali/public-api/object/base-object.h>
+#include <dali/public-api/render-tasks/render-task-list.h>
#define DALI_WINDOW_H
#include <dali/integration-api/adaptor-framework/adaptor.h>
return GetImplementation(*this).TouchedSignal();
}
+Dali::RenderTaskList Window::GetRenderTaskList()
+{
+ return GetImplementation(*this).GetRenderTaskList();
+}
+
namespace DevelWindow
{
Window Get(Actor actor)
KeyEventSignalType& KeyEventSignal();
TouchEventSignalType& TouchedSignal();
ResizeSignalType& ResizeSignal();
+ Dali::RenderTaskList GetRenderTaskList();
public:
explicit Window(Internal::Adaptor::Window* window);
void SceneView::OnSceneConnection(int depth)
{
- UpdateRenderTask();
-
Window window = DevelWindow::Get(Self());
if(window)
{
window.ResizeSignal().Connect(this, &SceneView::OnWindowResized);
+ RenderTaskList taskList = window.GetRenderTaskList();
+ mRenderTask = taskList.CreateTask();
+ mRenderTask.SetSourceActor(mRootLayer);
+ mRenderTask.SetExclusive(true);
+ mRenderTask.SetInputEnabled(true);
+ mRenderTask.SetCullMode(false);
+ mRenderTask.SetScreenToFrameBufferMappingActor(Self());
+
+ UpdateRenderTask();
+ mWindow = window;
}
Control::OnSceneConnection(depth);
{
mItems.clear();
- Window window = DevelWindow::Get(Self());
+ Window window = mWindow.GetHandle();
if(window)
{
window.ResizeSignal().Disconnect(this, &SceneView::OnWindowResized);
+ RenderTaskList taskList = window.GetRenderTaskList();
+ if(mRenderTask)
+ {
+ taskList.RemoveTask(mRenderTask);
+ mRenderTarget.Reset();
+ }
}
+ mWindow.Reset();
Control::OnSceneDisconnection();
}
mRootLayer.SetProperty(Dali::Actor::Property::INHERIT_SCALE, false);
self.Add(mRootLayer);
- RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
- mRenderTask = taskList.CreateTask();
- mRenderTask.SetSourceActor(mRootLayer);
- mRenderTask.SetExclusive(true);
- mRenderTask.SetInputEnabled(true);
- mRenderTask.SetCullMode(false);
- mRenderTask.SetScreenToFrameBufferMappingActor(Self());
-
mDefaultCamera = Dali::CameraActor::New();
mDefaultCamera.SetProperty(Dali::Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
mDefaultCamera.SetProperty(Dali::Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER);
void OnWindowResized(Window window, Window::WindowSize size);
/**
- * @brief Update camera's projection orientation according to the screen orientation.
+ * @brief Updates camera's projection orientation according to the screen orientation.
*/
void RotateCamera();
/////////////////////////////////////////////////////////////
// FrameBuffer and Rendertask to render child objects as a 3D Scene
+ Dali::WeakHandle<Dali::Window> mWindow;
CameraActor mDefaultCamera;
CameraActor mSelectedCamera;
std::vector<CameraActor> mCameras;