Paul Gofman (@gofman) commented about dlls/winex11.drv/vulkan.c:
-void wine_vk_surface_destroy(HWND hwnd) +static void wine_vk_surface_detach( struct wine_vk_surface *surface ) {
- struct wine_vk_surface *surface;
- pthread_mutex_lock(&vulkan_mutex);
- if (!XFindContext(gdi_display, (XID)hwnd, vulkan_hwnd_context, (char **)&surface))
- struct x11drv_win_data *data;
- TRACE( "Detaching surface %p, hwnd %p.\n", surface, surface->hwnd );
- if (surface->window && (data = get_win_data( surface->hwnd ))) {
surface->hwnd_thread_id = 0;
surface->hwnd = NULL;
wine_vk_surface_release(surface);
detach_client_window( data, surface->window );
Unless we are adding XSync to detach_client_window() as I suggested earlier, XSync(gdi_display) is probably needed here.