// callbacks
window->registerCallbackBufferChanged(this, std::bind(&DSRenderEngineDaliImpl::__onWindowUpdated, this, std::placeholders::_1));
+ window->registerCallbackWindowDestroyed(this, std::bind(&DSRenderEngineDaliImpl::__onWindowDestroyed, this, std::placeholders::_1));
return renderView;
}
bool DSRenderEngineDaliImpl::renderFrame()
{
- if (__needToRender)
+ if (__needToRender) {
Adaptor::Get().RenderOnce();
+ DSLOG_DBG("DSRenderEngineDaliImpl", "RENDER RENDER RENDER~!!!!");
+ }
__needToRender = false;
+
return true;
}
}
}
+void DSRenderEngineDaliImpl::__onWindowDestroyed(void *data)
+{
+ if (!__needToRender) {
+ DSLOG_DBG("DSRenderEngineDaliImpl", "Window destroyed!!");
+ // TODO: update twice, at this time and at idle handler.
+ // do not update a frame only once..
+ // NEED to check why dali does not update a frame at this time by execute one RenderOnce call.
+ Adaptor::Get().RenderOnce();
+ __needToRender = true;
+ }
+}
+
} // namespace display_server
private:
void __onWindowUpdated(std::shared_ptr<IDSBuffer> buffer);
+ void __onWindowDestroyed(void *data);
std::shared_ptr<IDSBufferQueue> __bufferQueue;
Dali::OffscreenApplication __offscreenApplication;