From 9a1362695b9ca08885ce68fd867cd2e129473d52 Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Bernon?= Date: Sat, 25 Nov 2023 01:44:49 +0100 Subject: [PATCH] winevulkan: Handle invalid window in vkCreateSwapchainKHR. --- dlls/vulkan-1/tests/vulkan.c | 2 -- dlls/winevulkan/vulkan.c | 6 ++++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/dlls/vulkan-1/tests/vulkan.c b/dlls/vulkan-1/tests/vulkan.c index e2ab609925b..371aef14255 100644 --- a/dlls/vulkan-1/tests/vulkan.c +++ b/dlls/vulkan-1/tests/vulkan.c @@ -858,7 +858,6 @@ static void test_win32_surface(VkInstance instance, VkPhysicalDevice physical_de swapchain = 0xdeadbeef; vr = create_swapchain(physical_device, surface, device, NULL, &swapchain); - todo_wine ok(vr == VK_ERROR_INITIALIZATION_FAILED /* Nvidia */ || vr == VK_SUCCESS /* AMD */, "Got unexpected vr %d.\n", vr); if (vr == VK_SUCCESS) @@ -928,7 +927,6 @@ static void test_win32_surface(VkInstance instance, VkPhysicalDevice physical_de swapchain = 0xdeadbeef; vr = create_swapchain(physical_device, surface, device, hwnd, &swapchain); - todo_wine ok(vr == VK_ERROR_INITIALIZATION_FAILED /* Nvidia */ || vr == VK_SUCCESS /* AMD */, "Got unexpected vr %d.\n", vr); if (vr == VK_SUCCESS) diff --git a/dlls/winevulkan/vulkan.c b/dlls/winevulkan/vulkan.c index 5d9d9e452b8..045f984731e 100644 --- a/dlls/winevulkan/vulkan.c +++ b/dlls/winevulkan/vulkan.c @@ -1570,6 +1570,12 @@ VkResult wine_vkCreateSwapchainKHR(VkDevice device_handle, const VkSwapchainCrea VkSurfaceCapabilitiesKHR capabilities; VkResult res; + if (!NtUserIsWindow(surface->hwnd)) + { + ERR("surface %p, hwnd %p is invalid!\n", surface, surface->hwnd); + return VK_ERROR_INITIALIZATION_FAILED; + } + if (surface) create_info_host.surface = surface->driver_surface; if (old_swapchain) create_info_host.oldSwapchain = old_swapchain->host_swapchain; -- 2.11.4.GIT