84 lines
3.0 KiB
Diff
84 lines
3.0 KiB
Diff
|
diff --git a/types/wlr_xdg_activation_v1.c b/types/wlr_xdg_activation_v1.c
|
||
|
index 02ba9e07f2b60857a3cdc1848f149c2d476161f7..c54364cccae258daea400724d4822bdb72f97fb5 100644
|
||
|
--- a/types/wlr_xdg_activation_v1.c
|
||
|
+++ b/types/wlr_xdg_activation_v1.c
|
||
|
@@ -248,15 +248,11 @@ static void activation_handle_destroy(struct wl_client *client,
|
||
|
wl_resource_destroy(activation_resource);
|
||
|
}
|
||
|
|
||
|
-static void activation_handle_get_activation_token(struct wl_client *client,
|
||
|
- struct wl_resource *activation_resource, uint32_t id) {
|
||
|
- struct wlr_xdg_activation_v1 *activation =
|
||
|
- activation_from_resource(activation_resource);
|
||
|
-
|
||
|
+static struct wlr_xdg_activation_token_v1 *activation_token_create(
|
||
|
+ struct wlr_xdg_activation_v1 *activation) {
|
||
|
struct wlr_xdg_activation_token_v1 *token = calloc(1, sizeof(*token));
|
||
|
if (token == NULL) {
|
||
|
- wl_client_post_no_memory(client);
|
||
|
- return;
|
||
|
+ return NULL;
|
||
|
}
|
||
|
wl_list_init(&token->link);
|
||
|
wl_list_init(&token->seat_destroy.link);
|
||
|
@@ -265,6 +261,20 @@ static void activation_handle_get_activation_token(struct wl_client *client,
|
||
|
|
||
|
token->activation = activation;
|
||
|
|
||
|
+ return token;
|
||
|
+}
|
||
|
+
|
||
|
+static void activation_handle_get_activation_token(struct wl_client *client,
|
||
|
+ struct wl_resource *activation_resource, uint32_t id) {
|
||
|
+ struct wlr_xdg_activation_v1 *activation =
|
||
|
+ activation_from_resource(activation_resource);
|
||
|
+
|
||
|
+ struct wlr_xdg_activation_token_v1 *token = activation_token_create(activation);
|
||
|
+ if (token == NULL) {
|
||
|
+ wl_client_post_no_memory(client);
|
||
|
+ return;
|
||
|
+ }
|
||
|
+
|
||
|
uint32_t version = wl_resource_get_version(activation_resource);
|
||
|
token->resource = wl_resource_create(client,
|
||
|
&xdg_activation_token_v1_interface, version, id);
|
||
|
@@ -371,19 +381,12 @@ struct wlr_xdg_activation_v1 *wlr_xdg_activation_v1_create(
|
||
|
|
||
|
struct wlr_xdg_activation_token_v1 *wlr_xdg_activation_token_v1_create(
|
||
|
struct wlr_xdg_activation_v1 *activation) {
|
||
|
- struct wlr_xdg_activation_token_v1 *token = calloc(1, sizeof(*token));
|
||
|
+ struct wlr_xdg_activation_token_v1 *token = activation_token_create(activation);
|
||
|
+
|
||
|
if (token == NULL) {
|
||
|
return NULL;
|
||
|
}
|
||
|
|
||
|
- wl_list_init(&token->link);
|
||
|
- // 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;
|
||
|
-
|
||
|
if (!token_init(token)) {
|
||
|
wlr_xdg_activation_token_v1_destroy(token);
|
||
|
return NULL;
|
||
|
@@ -412,15 +415,10 @@ struct wlr_xdg_activation_token_v1 *wlr_xdg_activation_v1_add_token(
|
||
|
struct wlr_xdg_activation_v1 *activation, const char *token_str) {
|
||
|
assert(token_str);
|
||
|
|
||
|
- struct wlr_xdg_activation_token_v1 *token = calloc(1, sizeof(*token));
|
||
|
+ struct wlr_xdg_activation_token_v1 *token = activation_token_create(activation);
|
||
|
if (token == NULL) {
|
||
|
return NULL;
|
||
|
}
|
||
|
- wl_list_init(&token->link);
|
||
|
- wl_list_init(&token->seat_destroy.link);
|
||
|
- wl_list_init(&token->surface_destroy.link);
|
||
|
-
|
||
|
- token->activation = activation;
|
||
|
token->token = strdup(token_str);
|
||
|
|
||
|
wl_list_insert(&activation->tokens, &token->link);
|