diff --git a/include/Nazara/Vulkan/VkDeviceObject.hpp b/include/Nazara/Vulkan/VkDeviceObject.hpp index d84812a3d..999762098 100644 --- a/include/Nazara/Vulkan/VkDeviceObject.hpp +++ b/include/Nazara/Vulkan/VkDeviceObject.hpp @@ -21,7 +21,7 @@ namespace Nz public: inline DeviceObject(Device& instance); DeviceObject(const DeviceObject&) = delete; - DeviceObject(DeviceObject&&) = delete; + DeviceObject(DeviceObject&&); inline ~DeviceObject(); inline bool Create(const CreateInfo& createInfo, const VkAllocationCallbacks* allocator = nullptr); diff --git a/include/Nazara/Vulkan/VkDeviceObject.inl b/include/Nazara/Vulkan/VkDeviceObject.inl index 7aa313ca9..58645983e 100644 --- a/include/Nazara/Vulkan/VkDeviceObject.inl +++ b/include/Nazara/Vulkan/VkDeviceObject.inl @@ -18,6 +18,16 @@ namespace Nz { } + template + inline DeviceObject::DeviceObject(DeviceObject&& object) : + m_device(object.m_device), + m_allocator(object.m_allocator), + m_handle(object.m_handle), + m_lastErrorCode(object.m_lastErrorCode) + { + object.m_handle = VK_NULL_HANDLE; + } + template inline DeviceObject::~DeviceObject() { diff --git a/include/Nazara/Vulkan/VkSemaphore.hpp b/include/Nazara/Vulkan/VkSemaphore.hpp index e1df38bc2..138d726be 100644 --- a/include/Nazara/Vulkan/VkSemaphore.hpp +++ b/include/Nazara/Vulkan/VkSemaphore.hpp @@ -21,7 +21,7 @@ namespace Nz public: inline Semaphore(Device& instance); Semaphore(const Semaphore&) = delete; - Semaphore(Semaphore&&) = delete; + Semaphore(Semaphore&&) = default; ~Semaphore() = default; using DeviceObject::Create; diff --git a/include/Nazara/Vulkan/VkSurface.hpp b/include/Nazara/Vulkan/VkSurface.hpp index 84f8459a2..a27f3d357 100644 --- a/include/Nazara/Vulkan/VkSurface.hpp +++ b/include/Nazara/Vulkan/VkSurface.hpp @@ -23,7 +23,7 @@ namespace Nz public: inline Surface(Instance& instance); Surface(const Surface&) = delete; - Surface(Surface&&) = delete; + Surface(Surface&& surface); inline ~Surface(); #ifdef VK_USE_PLATFORM_ANDROID_KHR diff --git a/include/Nazara/Vulkan/VkSurface.inl b/include/Nazara/Vulkan/VkSurface.inl index d045a1f06..e7b0efe64 100644 --- a/include/Nazara/Vulkan/VkSurface.inl +++ b/include/Nazara/Vulkan/VkSurface.inl @@ -17,6 +17,15 @@ namespace Nz { } + inline Surface::Surface(Surface&& surface) : + m_instance(surface.m_instance), + m_allocator(surface.m_allocator), + m_surface(surface.m_surface), + m_lastErrorCode(surface.m_lastErrorCode) + { + surface.m_surface = VK_NULL_HANDLE; + } + inline Surface::~Surface() { Destroy(); diff --git a/include/Nazara/Vulkan/VkSwapchain.hpp b/include/Nazara/Vulkan/VkSwapchain.hpp index dbef41394..ea47970d5 100644 --- a/include/Nazara/Vulkan/VkSwapchain.hpp +++ b/include/Nazara/Vulkan/VkSwapchain.hpp @@ -21,7 +21,7 @@ namespace Nz public: inline Swapchain(Device& instance); Swapchain(const Swapchain&) = delete; - Swapchain(Swapchain&&) = delete; + Swapchain(Swapchain&&) = default; ~Swapchain() = default; inline bool IsSupported() const;