// Check if there is render callback
if(mRenderCallback)
{
+ if(!mRenderCallbackInput)
+ {
+ mRenderCallbackInput = std::unique_ptr<RenderCallbackInput>(new RenderCallbackInput);
+ }
+
Graphics::DrawNativeInfo info{};
info.api = Graphics::DrawNativeAPI::GLES;
info.callback = &static_cast<Dali::CallbackBase&>(*mRenderCallback);
- info.userData = &mRenderCallbackInput;
+ info.userData = mRenderCallbackInput.get();
// Set storage for the context to be used
- info.glesNativeInfo.eglSharedContextStoragePointer = &mRenderCallbackInput.eglContext;
+ info.glesNativeInfo.eglSharedContextStoragePointer = &mRenderCallbackInput->eglContext;
info.reserved = nullptr;
auto& textureResources = mRenderCallback->GetTextureResources();
if(!textureResources.empty())
{
mRenderCallbackTextureBindings.clear();
- mRenderCallbackInput.textureBindings.resize(textureResources.size());
+ mRenderCallbackInput->textureBindings.resize(textureResources.size());
auto i = 0u;
for(auto& texture : textureResources)
{
auto properties = mGraphicsController->GetTextureProperties(*graphicsTexture);
mRenderCallbackTextureBindings.emplace_back(graphicsTexture);
- mRenderCallbackInput.textureBindings[i++] = properties.nativeHandle;
+ mRenderCallbackInput->textureBindings[i++] = properties.nativeHandle;
}
info.textureCount = mRenderCallbackTextureBindings.size();
info.textureList = mRenderCallbackTextureBindings.data();
}
// pass render callback input
- mRenderCallbackInput.size = size;
- mRenderCallbackInput.projection = projectionMatrix;
+ mRenderCallbackInput->size = size;
+ mRenderCallbackInput->projection = projectionMatrix;
- MatrixUtils::Multiply(mRenderCallbackInput.mvp, modelViewMatrix, projectionMatrix);
+ MatrixUtils::Multiply(mRenderCallbackInput->mvp, modelViewMatrix, projectionMatrix);
// submit draw
commandBuffer.DrawNative(&info);
*/
RenderCallbackInput& GetRenderCallbackInput()
{
- return mRenderCallbackInput;
+ if(!mRenderCallbackInput)
+ {
+ mRenderCallbackInput = std::unique_ptr<RenderCallbackInput>(new RenderCallbackInput);
+ }
+ return *mRenderCallbackInput;
}
/**
std::vector<Dali::DevelRenderer::DrawCommand> mDrawCommands; // Devel stuff
RenderCallback* mRenderCallback{nullptr};
- RenderCallbackInput mRenderCallbackInput{};
+ std::unique_ptr<RenderCallbackInput> mRenderCallbackInput{nullptr};
std::vector<Graphics::Texture*> mRenderCallbackTextureBindings{};
};