From ae1dd635b133dbe0e22c3b1b8ed93be0347e0865 Mon Sep 17 00:00:00 2001 From: emersion Date: Wed, 12 Dec 2018 11:00:28 +0100 Subject: [PATCH] data-device: fix dangling listener in seat_client_selection_source_destroy --- types/data_device/wlr_data_device.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/types/data_device/wlr_data_device.c b/types/data_device/wlr_data_device.c index f868ea37..cda755b1 100644 --- a/types/data_device/wlr_data_device.c +++ b/types/data_device/wlr_data_device.c @@ -122,6 +122,9 @@ static void seat_client_selection_source_destroy( wl_container_of(listener, seat, selection_source_destroy); struct wlr_seat_client *seat_client = seat->keyboard_state.focused_client; + wl_list_remove(&seat->selection_source_destroy.link); + seat->selection_source = NULL; + if (seat_client && seat->keyboard_state.focused_surface) { struct wl_resource *resource; wl_resource_for_each(resource, &seat_client->data_devices) { @@ -129,8 +132,6 @@ static void seat_client_selection_source_destroy( } } - seat->selection_source = NULL; - wlr_signal_emit_safe(&seat->events.selection, seat); }