From 8427749dd06b52bd8e53539f264a784beca9bb6f Mon Sep 17 00:00:00 2001 From: Dominique Martinet Date: Sat, 12 Aug 2017 01:16:12 +0200 Subject: [PATCH] wayland backend: emit signal for input/output removal --- backend/wayland/output.c | 1 + backend/wayland/wl_seat.c | 3 ++- include/backend/wayland.h | 7 ++++--- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/backend/wayland/output.c b/backend/wayland/output.c index 2c7086e24..318f1f058 100644 --- a/backend/wayland/output.c +++ b/backend/wayland/output.c @@ -46,6 +46,7 @@ static void wlr_wl_output_transform(struct wlr_output_state *output, } static void wlr_wl_output_destroy(struct wlr_output_state *output) { + wl_signal_emit(&output->backend->backend->events.output_remove, output->wlr_output); if(output->frame_callback) wl_callback_destroy(output->frame_callback); eglDestroySurface(output->backend->egl.display, output->surface); wl_egl_window_destroy(output->egl_window); diff --git a/backend/wayland/wl_seat.c b/backend/wayland/wl_seat.c index ab3de74d8..887848280 100644 --- a/backend/wayland/wl_seat.c +++ b/backend/wayland/wl_seat.c @@ -169,6 +169,7 @@ static struct wl_keyboard_listener keyboard_listener = { }; static void input_device_destroy(struct wlr_input_device_state *state) { + wl_signal_emit(&state->backend->backend->events.input_remove, state->wlr_device); if (state->resource) wl_proxy_destroy(state->resource); free(state); @@ -206,7 +207,7 @@ static struct wlr_input_device *allocate_device(struct wlr_backend_state *state, free(devstate); return NULL; } - + devstate->wlr_device = wlr_device; list_add(state->devices, wlr_device); return wlr_device; } diff --git a/include/backend/wayland.h b/include/backend/wayland.h index e6339a231..1ce4e135c 100644 --- a/include/backend/wayland.h +++ b/include/backend/wayland.h @@ -33,13 +33,14 @@ struct wlr_output_state { struct wlr_output *wlr_output; struct wl_surface *surface; struct wl_shell_surface *shell_surface; - struct wl_egl_window* egl_window; - struct wl_callback* frame_callback; + struct wl_egl_window *egl_window; + struct wl_callback *frame_callback; void *egl_surface; }; struct wlr_input_device_state { - struct wlr_backend_state* backend; + struct wlr_backend_state *backend; + struct wlr_input_device *wlr_device; void *resource; };