diff options
Diffstat (limited to 'src/client/qwaylandvulkanwindow.cpp')
-rw-r--r-- | src/client/qwaylandvulkanwindow.cpp | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/client/qwaylandvulkanwindow.cpp b/src/client/qwaylandvulkanwindow.cpp index 228bf5ced..2bc52829d 100644 --- a/src/client/qwaylandvulkanwindow.cpp +++ b/src/client/qwaylandvulkanwindow.cpp @@ -14,11 +14,7 @@ QWaylandVulkanWindow::QWaylandVulkanWindow(QWindow *window, QWaylandDisplay *dis QWaylandVulkanWindow::~QWaylandVulkanWindow() { - if (m_surface) { - QVulkanInstance *inst = window()->vulkanInstance(); - if (inst) - static_cast<QWaylandVulkanInstance *>(inst->handle())->destroySurface(m_surface); - } + invalidateSurface(); } QWaylandWindow::WindowType QWaylandVulkanWindow::windowType() const @@ -26,7 +22,18 @@ QWaylandWindow::WindowType QWaylandVulkanWindow::windowType() const return QWaylandWindow::Vulkan; } -VkSurfaceKHR *QWaylandVulkanWindow::surface() +void QWaylandVulkanWindow::invalidateSurface() +{ + if (m_surface) { + QVulkanInstance *inst = window()->vulkanInstance(); + if (inst) + static_cast<QWaylandVulkanInstance *>(inst->handle())->destroySurface(m_surface); + } + m_surface = VK_NULL_HANDLE; + QWaylandWindow::invalidateSurface(); +} + +VkSurfaceKHR *QWaylandVulkanWindow::vkSurface() { if (m_surface) return &m_surface; |