Commit 157d5402 authored by Alexandros Frantzis's avatar Alexandros Frantzis Committed by Alexandre Julliard

winewayland.drv: Apply surface configuration during Vulkan presentation.

When we have a Vulkan client subsurface, and depending on timings and window state (e.g., fullscreen), we may not get the chance to apply new surface configurations when presenting content to the main window surface. To ensure new configurations are applied, also check for and apply/ack configurations during Vulkan presentation. This fixes some games which resize when they become fullscreen, but are not properly placed by the compositor, because they never ack the fullscreen state.
parent 6a4fb894
...@@ -270,6 +270,15 @@ static VkResult check_queue_present(const VkPresentInfoKHR *present_info, ...@@ -270,6 +270,15 @@ static VkResult check_queue_present(const VkPresentInfoKHR *present_info,
wayland_surface_ensure_contents(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);
}
pthread_mutex_unlock(&wayland_surface->mutex); pthread_mutex_unlock(&wayland_surface->mutex);
if (client_width == wine_vk_swapchain->extent.width && if (client_width == wine_vk_swapchain->extent.width &&
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment