Renderer: Add release queue to fix deletion while use

This commit is contained in:
Jérôme Leclercq
2021-05-14 02:04:47 +02:00
parent 51ecff2912
commit f280cff0a2
13 changed files with 163 additions and 15 deletions

View File

@@ -23,6 +23,21 @@ namespace Nz
return m_framebufferInvalidation;
}
template<typename T>
void RenderFrame::PushForRelease(T&& value)
{
return PushReleaseCallback([v = std::forward<T>(value)] {});
}
template<typename F>
void RenderFrame::PushReleaseCallback(F&& releaseCallback)
{
if (!m_image)
throw std::runtime_error("frame is either invalid or has already been presented");
m_image->PushReleaseCallback(std::forward<F>(releaseCallback));
}
inline RenderFrame::operator bool()
{
return m_image != nullptr;