From 291001d7e10222dd07f37fdd48972104c434e2b0 Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Tue, 25 Dec 2018 07:26:36 -0500 Subject: [PATCH] Properly destroy viewport render target --- tools/leveleditor/include/renderwindow.h | 1 - tools/leveleditor/src/renderwindow.cpp | 14 ++++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/tools/leveleditor/include/renderwindow.h b/tools/leveleditor/include/renderwindow.h index fd0e268..7384e57 100644 --- a/tools/leveleditor/include/renderwindow.h +++ b/tools/leveleditor/include/renderwindow.h @@ -11,7 +11,6 @@ class RendererWindow : public QWindow { Q_OBJECT public: RendererWindow(Context& context); - ~RendererWindow(); protected: void exposeEvent(QExposeEvent* event) override; diff --git a/tools/leveleditor/src/renderwindow.cpp b/tools/leveleditor/src/renderwindow.cpp index 34a21ba..c9576ab 100644 --- a/tools/leveleditor/src/renderwindow.cpp +++ b/tools/leveleditor/src/renderwindow.cpp @@ -10,10 +10,6 @@ RendererWindow::RendererWindow(Context& context) : QWindow(), context(context) { setSurfaceType(SurfaceType::VulkanSurface); } -RendererWindow::~RendererWindow() { - -} - void RendererWindow::exposeEvent(QExposeEvent*) { if (isExposed() && !initialized) { init(); @@ -28,6 +24,12 @@ bool RendererWindow::event(QEvent* event) { case QEvent::UpdateRequest: render(); break; + case QEvent::PlatformSurface: + { + if(static_cast(event)->surfaceEventType() == QPlatformSurfaceEvent::SurfaceAboutToBeDestroyed) + context.renderer->destroyRenderTarget(target); + } + break; default: break; } @@ -42,14 +44,14 @@ void RendererWindow::init() { } void RendererWindow::render() { - context.renderer->render(*worldManager.getCurrentWorld(), target); - const auto width = size().width(); const auto height = size().height(); if(target->extent.width != width || target->extent.height != height) target = context.renderer->createSurfaceRenderTarget(surface, target); + context.renderer->render(*worldManager.getCurrentWorld(), target); + vulkanInstance()->presentQueued(this); requestUpdate(); }