aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDominique Martinet <asmadeus@codewreck.org>2017-08-12 01:16:12 +0200
committerDominique Martinet <asmadeus@codewreck.org>2017-08-12 01:16:12 +0200
commit8427749dd06b52bd8e53539f264a784beca9bb6f (patch)
tree38742a47592963fdb79a1c753eaa6cd951f31930
parentc323bfc6a0016076e3a27a639da23f6c176c68fa (diff)
wayland backend: emit signal for input/output removal
-rw-r--r--backend/wayland/output.c1
-rw-r--r--backend/wayland/wl_seat.c3
-rw-r--r--include/backend/wayland.h7
3 files changed, 7 insertions, 4 deletions
diff --git a/backend/wayland/output.c b/backend/wayland/output.c
index 2c7086e2..318f1f05 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 ab3de74d..88784828 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 e6339a23..1ce4e135 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;
};