aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/wlr/types/wlr_xdg_activation_v1.h6
-rw-r--r--types/wlr_xdg_activation_v1.c5
2 files changed, 11 insertions, 0 deletions
diff --git a/include/wlr/types/wlr_xdg_activation_v1.h b/include/wlr/types/wlr_xdg_activation_v1.h
index 89946d84..46356215 100644
--- a/include/wlr/types/wlr_xdg_activation_v1.h
+++ b/include/wlr/types/wlr_xdg_activation_v1.h
@@ -22,6 +22,12 @@ struct wlr_xdg_activation_token_v1 {
char *app_id; // can be NULL
struct wl_list link; // wlr_xdg_activation_v1.tokens
+ void *data;
+
+ struct {
+ struct wl_signal destroy;
+ } events;
+
// private state
char *token;
diff --git a/types/wlr_xdg_activation_v1.c b/types/wlr_xdg_activation_v1.c
index 9fe81419..64864d88 100644
--- a/types/wlr_xdg_activation_v1.c
+++ b/types/wlr_xdg_activation_v1.c
@@ -32,6 +32,9 @@ void wlr_xdg_activation_token_v1_destroy(
if (token->timeout != NULL) {
wl_event_source_remove(token->timeout);
}
+
+ wlr_signal_emit_safe(&token->events.destroy, NULL);
+
wl_list_remove(&token->link);
wl_list_remove(&token->seat_destroy.link);
wl_list_remove(&token->surface_destroy.link);
@@ -258,6 +261,7 @@ static void activation_handle_get_activation_token(struct wl_client *client,
wl_list_init(&token->link);
wl_list_init(&token->seat_destroy.link);
wl_list_init(&token->surface_destroy.link);
+ wl_signal_init(&token->events.destroy);
token->activation = activation;
@@ -376,6 +380,7 @@ struct wlr_xdg_activation_token_v1 *wlr_xdg_activation_token_v1_create(
// Currently no way to set seat/surface
wl_list_init(&token->seat_destroy.link);
wl_list_init(&token->surface_destroy.link);
+ wl_signal_init(&token->events.destroy);
token->activation = activation;