bug: fix seat handle destroy handler

This commit is contained in:
Tony Crisci 2017-10-16 09:14:16 -04:00
parent c0e8585a4c
commit f9d578700e
2 changed files with 3 additions and 1 deletions

View file

@ -353,6 +353,7 @@ static void drag_handle_seat_unbound(struct wl_listener *listener, void *data) {
if (drag->focus_handle == unbound_handle) { if (drag->focus_handle == unbound_handle) {
drag->focus_handle = NULL; drag->focus_handle = NULL;
wl_list_remove(&drag->handle_unbound.link);
} }
} }

View file

@ -142,6 +142,8 @@ static void wl_seat_get_touch(struct wl_client *client,
static void wlr_seat_handle_resource_destroy(struct wl_resource *resource) { static void wlr_seat_handle_resource_destroy(struct wl_resource *resource) {
struct wlr_seat_handle *handle = wl_resource_get_user_data(resource); struct wlr_seat_handle *handle = wl_resource_get_user_data(resource);
wl_signal_emit(&handle->wlr_seat->events.client_unbound, handle);
if (handle == handle->wlr_seat->pointer_state.focused_handle) { if (handle == handle->wlr_seat->pointer_state.focused_handle) {
handle->wlr_seat->pointer_state.focused_handle = NULL; handle->wlr_seat->pointer_state.focused_handle = NULL;
} }
@ -161,7 +163,6 @@ static void wlr_seat_handle_resource_destroy(struct wl_resource *resource) {
if (handle->data_device) { if (handle->data_device) {
wl_resource_destroy(handle->data_device); wl_resource_destroy(handle->data_device);
} }
wl_signal_emit(&handle->wlr_seat->events.client_unbound, handle);
wl_list_remove(&handle->link); wl_list_remove(&handle->link);
free(handle); free(handle);
} }