Module: wine Branch: master Commit: 9a1362695b9ca08885ce68fd867cd2e129473d52 URL: https://gitlab.winehq.org/wine/wine/-/commit/9a1362695b9ca08885ce68fd867cd2e...
Author: Rémi Bernon rbernon@codeweavers.com Date: Sat Nov 25 01:44:49 2023 +0100
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;