[PATCH v3 0/1] MR11486: winewayland: Add support for wl_fixes.ack_global_remove.
See !11417 for why this is needed. -- v3: winewayland: Add support for wl_fixes.ack_global_remove. https://gitlab.winehq.org/wine/wine/-/merge_requests/11486
From: Vlad Zahorodnii <vlad.zahorodnii@kde.org> The wl_fixes.ack_global_remove request signals the compositor that the client will not bind the removed global. It can be used by the compositor to decide when it is safe to actually destroy the corresponding global. If a global is destroyed too soon, some clients may get disconnected. --- dlls/winewayland.drv/wayland.c | 12 ++++++++++++ dlls/winewayland.drv/waylanddrv.h | 1 + 2 files changed, 13 insertions(+) diff --git a/dlls/winewayland.drv/wayland.c b/dlls/winewayland.drv/wayland.c index d5fb36417c1..e019292419a 100644 --- a/dlls/winewayland.drv/wayland.c +++ b/dlls/winewayland.drv/wayland.c @@ -215,6 +215,13 @@ static void registry_handle_global(void *data, struct wl_registry *registry, process_wayland.wp_fractional_scale_manager_v1 = wl_registry_bind(registry, id, &wp_fractional_scale_manager_v1_interface, 1); } +#ifdef WL_FIXES_ACK_GLOBAL_REMOVE + else if (strcmp(interface, "wl_fixes") == 0) + { + if (version < 2) return; + process_wayland.wl_fixes = wl_registry_bind(registry, id, &wl_fixes_interface, 2); + } +#endif } static void registry_handle_global_remove(void *data, struct wl_registry *registry, @@ -225,6 +232,11 @@ static void registry_handle_global_remove(void *data, struct wl_registry *regist TRACE("id=%u\n", id); +#ifdef WL_FIXES_ACK_GLOBAL_REMOVE + if (process_wayland.wl_fixes) + wl_fixes_ack_global_remove(process_wayland.wl_fixes, registry, id); +#endif + wl_list_for_each_safe(output, tmp, &process_wayland.output_list, link) { if (output->global_id == id) diff --git a/dlls/winewayland.drv/waylanddrv.h b/dlls/winewayland.drv/waylanddrv.h index fa590eecd13..de15676d2e3 100644 --- a/dlls/winewayland.drv/waylanddrv.h +++ b/dlls/winewayland.drv/waylanddrv.h @@ -175,6 +175,7 @@ struct wayland struct wl_shm *wl_shm; struct wp_viewporter *wp_viewporter; struct wl_subcompositor *wl_subcompositor; + struct wl_fixes *wl_fixes; struct wp_fractional_scale_manager_v1 *wp_fractional_scale_manager_v1; struct zwp_pointer_constraints_v1 *zwp_pointer_constraints_v1; struct zwp_relative_pointer_manager_v1 *zwp_relative_pointer_manager_v1; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/11486
This merge request was closed by Etaash Mathamsetty. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/11486
participants (2)
-
Etaash Mathamsetty (@etaash.mathamsetty) -
Vlad Zahorodnii