mirror of
				https://gitlab.freedesktop.org/wlroots/wlroots.git
				synced 2025-11-03 09:01:40 -05:00 
			
		
		
		
	xdg-activation: Deduplicate token creation code
There were three places initializing a token:
- wlr_xdg_activation_v1_add_token
- wlr_xdg_activation_token_v1_create
- activation_handle_get_activation_token
The initialization of the token.destroy was missing in the first one. To
prevent these functions from getting out of sync move the token creation
into a common function.
Fixes 4c59f7d4 ("xdg-activation: Allow to submit tokens")
			
			
This commit is contained in:
		
							parent
							
								
									4519117a68
								
							
						
					
					
						commit
						dd03d839ab
					
				
					 1 changed files with 20 additions and 22 deletions
				
			
		| 
						 | 
					@ -248,15 +248,11 @@ static void activation_handle_destroy(struct wl_client *client,
 | 
				
			||||||
	wl_resource_destroy(activation_resource);
 | 
						wl_resource_destroy(activation_resource);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void activation_handle_get_activation_token(struct wl_client *client,
 | 
					static struct wlr_xdg_activation_token_v1 *activation_token_create(
 | 
				
			||||||
		struct wl_resource *activation_resource, uint32_t id) {
 | 
							struct wlr_xdg_activation_v1 *activation) {
 | 
				
			||||||
	struct wlr_xdg_activation_v1 *activation =
 | 
					 | 
				
			||||||
		activation_from_resource(activation_resource);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	struct wlr_xdg_activation_token_v1 *token = calloc(1, sizeof(*token));
 | 
						struct wlr_xdg_activation_token_v1 *token = calloc(1, sizeof(*token));
 | 
				
			||||||
	if (token == NULL) {
 | 
						if (token == NULL) {
 | 
				
			||||||
		wl_client_post_no_memory(client);
 | 
							return NULL;
 | 
				
			||||||
		return;
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	wl_list_init(&token->link);
 | 
						wl_list_init(&token->link);
 | 
				
			||||||
	wl_list_init(&token->seat_destroy.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;
 | 
						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);
 | 
						uint32_t version = wl_resource_get_version(activation_resource);
 | 
				
			||||||
	token->resource = wl_resource_create(client,
 | 
						token->resource = wl_resource_create(client,
 | 
				
			||||||
		&xdg_activation_token_v1_interface, version, id);
 | 
							&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_token_v1 *wlr_xdg_activation_token_v1_create(
 | 
				
			||||||
		struct wlr_xdg_activation_v1 *activation) {
 | 
							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) {
 | 
						if (token == NULL) {
 | 
				
			||||||
		return 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)) {
 | 
						if (!token_init(token)) {
 | 
				
			||||||
		wlr_xdg_activation_token_v1_destroy(token);
 | 
							wlr_xdg_activation_token_v1_destroy(token);
 | 
				
			||||||
		return NULL;
 | 
							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) {
 | 
							struct wlr_xdg_activation_v1 *activation, const char *token_str) {
 | 
				
			||||||
	assert(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) {
 | 
						if (token == NULL) {
 | 
				
			||||||
		return 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);
 | 
						token->token = strdup(token_str);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	wl_list_insert(&activation->tokens, &token->link);
 | 
						wl_list_insert(&activation->tokens, &token->link);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue