diff --git a/src/yave_vulkan_surface.cpp b/src/yave_vulkan_surface.cpp index 3c7353b..0b7935d 100644 --- a/src/yave_vulkan_surface.cpp +++ b/src/yave_vulkan_surface.cpp @@ -1,7 +1,5 @@ #include "yave_vulkan_surface.hpp" #include "yave_vulkan_instance.hpp" -#include -#include #define GLFW_INCLUDE_VULKAN #include @@ -10,12 +8,15 @@ namespace yave { YaveVulkanSurface::YaveVulkanSurface(YaveVulkanInstance &yaveVulkanInstance, YaveWindow &window) { - if (glfwCreateWindowSurface(*yaveVulkanInstance.getVkInstance(), window.getGLFWWindow(), nullptr, + this->instance = yaveVulkanInstance.getVkInstance(); + if (glfwCreateWindowSurface(*instance, window.getGLFWWindow(), nullptr, &surface)) { throw std::runtime_error("failed to create window surface!"); } } -YaveVulkanSurface::~YaveVulkanSurface() {} +YaveVulkanSurface::~YaveVulkanSurface() { + vkDestroySurfaceKHR(*instance, surface, nullptr); +} } // namespace yave diff --git a/src/yave_vulkan_surface.hpp b/src/yave_vulkan_surface.hpp index 2874ede..e46fbfb 100644 --- a/src/yave_vulkan_surface.hpp +++ b/src/yave_vulkan_surface.hpp @@ -4,19 +4,17 @@ #include "yave_window.hpp" #include -// This engine is for now Wayland only!!! -#define VK_USE_PLATFORM_WAYLAND_KHR -#include #define GLFW_INCLUDE_VULKAN #include -#define GLFW_EXPOSE_NATIVE_WAYLAND -#include namespace yave { class YaveVulkanSurface { private: + // Keep reference to instance this surface is attached to + VkInstance *instance; + VkSurfaceKHR surface; public: