mSurface->SetAdaptor(*mAdaptor);
mSurface->SetScene(mScene);
+ // Recreate the render target
+ CreateRenderTarget();
+
OnSurfaceSet(surface);
}
mSurface->SetAdaptor(*mAdaptor);
mSurface->SetScene(mScene);
+ // Create the render target
+ CreateRenderTarget();
+
OnAdaptorSet(adaptor);
}
+void SceneHolder::CreateRenderTarget()
+{
+ Graphics::RenderTargetCreateInfo rtInfo{};
+ rtInfo
+ .SetSurface(mSurface.get())
+ .SetExtent({static_cast<uint32_t>(mSurface->GetPositionSize().width), static_cast<uint32_t>(mSurface->GetPositionSize().height)})
+ .SetPreTransform(0 | Graphics::RenderTargetTransformFlagBits::TRANSFORM_IDENTITY_BIT);
+ mRenderTarget = mAdaptor->GetGraphicsInterface().GetController().CreateRenderTarget(rtInfo, std::move(mRenderTarget));
+
+ mScene.SetSurfaceRenderTarget(mRenderTarget.get());
+}
+
void SceneHolder::Pause()
{
Reset();
#define DALI_INTEGRATION_INTERNAL_SCENEHOLDER_H
/*
- * Copyright (c) 2020 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2021 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.
*/
// EXTERNAL INCLUDES
+#include <dali/graphics-api/graphics-controller.h>
#include <dali/integration-api/events/key-event-integ.h>
#include <dali/integration-api/events/point.h>
#include <dali/integration-api/events/touch-event-combiner.h>
void AddFramePresentedCallback(std::unique_ptr<CallbackBase> callback, int32_t frameId);
/**
+ * @brief Creates the render target for the surface when the surface is created/resized/replaced.
+ */
+ void CreateRenderTarget();
+
+ /**
* @copydoc Dali::Integration::SceneHolder::Get()
*/
static Dali::Integration::SceneHolder Get(Dali::Actor actor);
*/
virtual Dali::Any GetNativeHandle() const = 0;
+private:
+ Graphics::UniquePtr<Graphics::RenderTarget> mRenderTarget{nullptr};
+
protected:
// Constructor
SceneHolder();