From 878b76f75ea2f9f3177dc064187e91217922c7cc Mon Sep 17 00:00:00 2001 From: sfan5 Date: Wed, 28 Feb 2024 17:25:13 +0100 Subject: wayland_common: fix initialization order issue with protocols This broke DND under (apparently) GNOME and KWin, but not sway. fixes: 2274311b259b7b03e3764ab4c21d69988b70a337 --- video/out/wayland_common.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/video/out/wayland_common.c b/video/out/wayland_common.c index 3c07ee79ee..78ce86ca74 100644 --- a/video/out/wayland_common.c +++ b/video/out/wayland_common.c @@ -1474,10 +1474,6 @@ static void registry_handle_add(void *data, struct wl_registry *reg, uint32_t id seat->id = id; seat->seat = wl_registry_bind(reg, id, &wl_seat_interface, ver); wl_seat_add_listener(seat->seat, &seat_listener, seat); - if (wl->dnd_devman) { - seat->dnd_ddev = wl_data_device_manager_get_data_device(wl->dnd_devman, seat->seat); - wl_data_device_add_listener(seat->dnd_ddev, &data_device_listener, seat); - } wl_list_insert(&wl->seat_list, &seat->link); } @@ -2490,7 +2486,13 @@ bool vo_wayland_init(struct vo *vo) } #endif - if (!wl->dnd_devman) { + if (wl->dnd_devman) { + struct vo_wayland_seat *seat; + wl_list_for_each(seat, &wl->seat_list, link) { + seat->dnd_ddev = wl_data_device_manager_get_data_device(wl->dnd_devman, seat->seat); + wl_data_device_add_listener(seat->dnd_ddev, &data_device_listener, seat); + } + } else { MP_VERBOSE(wl, "Compositor doesn't support the %s (ver. 3) protocol!\n", wl_data_device_manager_interface.name); } -- cgit v1.2.3