From: Rémi Bernon <rbernon@codeweavers.com> --- dlls/winewayland.drv/wayland_surface.c | 22 +++++++++++++++++++++- dlls/winewayland.drv/waylanddrv.h | 1 - dlls/winewayland.drv/window.c | 24 ------------------------ 3 files changed, 21 insertions(+), 26 deletions(-) diff --git a/dlls/winewayland.drv/wayland_surface.c b/dlls/winewayland.drv/wayland_surface.c index 8d4dfb0f618..0f811ec904c 100644 --- a/dlls/winewayland.drv/wayland_surface.c +++ b/dlls/winewayland.drv/wayland_surface.c @@ -1198,7 +1198,27 @@ static void wayland_client_surface_present(struct client_surface *client, HDC hd { struct wayland_client_surface *surface = impl_from_client_surface(client); HWND hwnd = client->hwnd, toplevel = NtUserGetAncestor(hwnd, GA_ROOT); - ensure_window_surface_contents(toplevel); + struct wayland_surface *wayland_surface; + struct wayland_win_data *data; + + if (!(data = wayland_win_data_get(toplevel))) return; + + if ((wayland_surface = data->wayland_surface)) + { + wayland_surface_ensure_contents(wayland_surface); + + /* Handle any processed configure request, to ensure the related + * surface state is applied by the compositor. */ + if (wayland_surface->processing.serial && + wayland_surface->processing.processed && + wayland_surface_reconfigure(wayland_surface)) + { + wl_surface_commit(wayland_surface->wl_surface); + } + } + + wayland_win_data_release(data); + set_client_surface(hwnd, surface); } diff --git a/dlls/winewayland.drv/waylanddrv.h b/dlls/winewayland.drv/waylanddrv.h index 8df6fa5a986..f88c562112c 100644 --- a/dlls/winewayland.drv/waylanddrv.h +++ b/dlls/winewayland.drv/waylanddrv.h @@ -391,7 +391,6 @@ struct wayland_client_surface *get_client_surface(HWND hwnd); void set_client_surface(HWND hwnd, struct wayland_client_surface *client); BOOL set_window_surface_contents(HWND hwnd, struct wayland_shm_buffer *shm_buffer, HRGN damage_region); struct wayland_shm_buffer *get_window_surface_contents(HWND hwnd); -void ensure_window_surface_contents(HWND hwnd); void wayland_window_init(void); /********************************************************************** diff --git a/dlls/winewayland.drv/window.c b/dlls/winewayland.drv/window.c index 1ee04f53021..a3f0f35ff79 100644 --- a/dlls/winewayland.drv/window.c +++ b/dlls/winewayland.drv/window.c @@ -879,30 +879,6 @@ struct wayland_shm_buffer *get_window_surface_contents(HWND hwnd) return shm_buffer; } -void ensure_window_surface_contents(HWND hwnd) -{ - struct wayland_surface *wayland_surface; - struct wayland_win_data *data; - - if (!(data = wayland_win_data_get(hwnd))) return; - - if ((wayland_surface = data->wayland_surface)) - { - wayland_surface_ensure_contents(wayland_surface); - - /* Handle any processed configure request, to ensure the related - * surface state is applied by the compositor. */ - if (wayland_surface->processing.serial && - wayland_surface->processing.processed && - wayland_surface_reconfigure(wayland_surface)) - { - wl_surface_commit(wayland_surface->wl_surface); - } - } - - wayland_win_data_release(data); -} - void wayland_window_init(void) { pthread_mutexattr_t attr; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/11225