From 8eed857292cd5b473a07920b1a5698f1e641da22 Mon Sep 17 00:00:00 2001 From: emersion Date: Thu, 1 Feb 2018 12:08:35 +0100 Subject: [PATCH] output: add destroy signal for wlr_output_cursor --- include/wlr/types/wlr_output.h | 4 ++++ types/wlr_output.c | 2 ++ 2 files changed, 6 insertions(+) diff --git a/include/wlr/types/wlr_output.h b/include/wlr/types/wlr_output.h index 55431ab1..9df2001e 100644 --- a/include/wlr/types/wlr_output.h +++ b/include/wlr/types/wlr_output.h @@ -29,6 +29,10 @@ struct wlr_output_cursor { struct wlr_surface *surface; struct wl_listener surface_commit; struct wl_listener surface_destroy; + + struct { + struct wl_signal destroy; + } events; }; struct wlr_output_impl; diff --git a/types/wlr_output.c b/types/wlr_output.c index 426926ac..2bdbbfee 100644 --- a/types/wlr_output.c +++ b/types/wlr_output.c @@ -694,6 +694,7 @@ struct wlr_output_cursor *wlr_output_cursor_create(struct wlr_output *output) { return NULL; } cursor->output = output; + wl_signal_init(&cursor->events.destroy); wl_list_init(&cursor->surface_commit.link); cursor->surface_commit.notify = output_cursor_handle_commit; wl_list_init(&cursor->surface_destroy.link); @@ -707,6 +708,7 @@ void wlr_output_cursor_destroy(struct wlr_output_cursor *cursor) { return; } output_cursor_reset(cursor); + wl_signal_emit(&cursor->events.destroy, cursor); if (cursor->output->hardware_cursor == cursor) { // If this cursor was the hardware cursor, disable it if (cursor->output->impl->set_cursor) {