From: Rémi Bernon rbernon@codeweavers.com
--- dlls/win32u/ntuser_private.h | 1 + dlls/win32u/vulkan.c | 16 ++++++++++++++++ dlls/win32u/window.c | 1 + 3 files changed, 18 insertions(+)
diff --git a/dlls/win32u/ntuser_private.h b/dlls/win32u/ntuser_private.h index 2f3bbdf91c0..e757f69b554 100644 --- a/dlls/win32u/ntuser_private.h +++ b/dlls/win32u/ntuser_private.h @@ -227,6 +227,7 @@ extern PFN_vkGetDeviceProcAddr p_vkGetDeviceProcAddr; extern PFN_vkGetInstanceProcAddr p_vkGetInstanceProcAddr;
extern BOOL vulkan_init(void); +extern void vulkan_update_surfaces( HWND hwnd ); extern void vulkan_detach_surfaces( struct list *surfaces );
/* window.c */ diff --git a/dlls/win32u/vulkan.c b/dlls/win32u/vulkan.c index c676ae10e54..a1985ca91fa 100644 --- a/dlls/win32u/vulkan.c +++ b/dlls/win32u/vulkan.c @@ -693,6 +693,22 @@ static void vulkan_init_once(void) vulkan_funcs.p_vkGetDeviceProcAddr = p_vkGetDeviceProcAddr; }
+void vulkan_update_surfaces( HWND hwnd ) +{ + struct surface *surface; + struct rb_entry *ptr; + + pthread_mutex_lock( &window_surfaces_lock ); + + if ((ptr = rb_get( &window_surfaces, hwnd ))) + { + surface = RB_ENTRY_VALUE( ptr, struct surface, window_entry ); + driver_funcs->p_vulkan_surface_update( surface->hwnd, surface->driver_private ); + } + + pthread_mutex_unlock( &window_surfaces_lock ); +} + void vulkan_detach_surfaces( struct list *surfaces ) { struct surface *surface, *next; diff --git a/dlls/win32u/window.c b/dlls/win32u/window.c index 4855555d926..203f44f0bb7 100644 --- a/dlls/win32u/window.c +++ b/dlls/win32u/window.c @@ -4601,6 +4601,7 @@ void update_window_state( HWND hwnd ) if (surface) window_surface_release( surface );
set_thread_dpi_awareness_context( context ); + vulkan_update_surfaces( hwnd ); }
/***********************************************************************