class_ -> class, free more stuff in destroy_shell_surface
This commit is contained in:
		
							parent
							
								
									241fec4d87
								
							
						
					
					
						commit
						d6c6b7c506
					
				| 
						 | 
					@ -51,7 +51,7 @@ struct wlr_wl_shell_surface {
 | 
				
			||||||
	struct wlr_wl_shell_surface_popup_state *popup_state;
 | 
						struct wlr_wl_shell_surface_popup_state *popup_state;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	char *title;
 | 
						char *title;
 | 
				
			||||||
	char *class_;
 | 
						char *class;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	struct {
 | 
						struct {
 | 
				
			||||||
		struct wl_signal destroy;
 | 
							struct wl_signal destroy;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,7 +25,7 @@ void handle_wl_shell_surface(struct wl_listener *listener, void *data) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	struct wlr_wl_shell_surface *surface = data;
 | 
						struct wlr_wl_shell_surface *surface = data;
 | 
				
			||||||
	wlr_log(L_DEBUG, "new shell surface: title=%s, class=%s",
 | 
						wlr_log(L_DEBUG, "new shell surface: title=%s, class=%s",
 | 
				
			||||||
		surface->title, surface->class_);
 | 
							surface->title, surface->class);
 | 
				
			||||||
	//wlr_wl_shell_surface_ping(surface); // TODO: segfaults
 | 
						//wlr_wl_shell_surface_ping(surface); // TODO: segfaults
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	struct roots_wl_shell_surface *roots_surface =
 | 
						struct roots_wl_shell_surface *roots_surface =
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -245,17 +245,17 @@ static void shell_surface_set_title(struct wl_client *client,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void shell_surface_set_class(struct wl_client *client,
 | 
					static void shell_surface_set_class(struct wl_client *client,
 | 
				
			||||||
		struct wl_resource *resource, const char *class_) {
 | 
							struct wl_resource *resource, const char *class) {
 | 
				
			||||||
	wlr_log(L_DEBUG, "new shell surface class: %s", class_);
 | 
						wlr_log(L_DEBUG, "new shell surface class: %s", class);
 | 
				
			||||||
	struct wlr_wl_shell_surface *surface = wl_resource_get_user_data(resource);
 | 
						struct wlr_wl_shell_surface *surface = wl_resource_get_user_data(resource);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	char *tmp = strdup(class_);
 | 
						char *tmp = strdup(class);
 | 
				
			||||||
	if (tmp == NULL) {
 | 
						if (tmp == NULL) {
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	free(surface->class_);
 | 
						free(surface->class);
 | 
				
			||||||
	surface->class_ = tmp;
 | 
						surface->class = tmp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	wl_signal_emit(&surface->events.set_class, surface);
 | 
						wl_signal_emit(&surface->events.set_class, surface);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -277,8 +277,10 @@ static void destroy_shell_surface(struct wl_resource *resource) {
 | 
				
			||||||
	struct wlr_wl_shell_surface *surface = wl_resource_get_user_data(resource);
 | 
						struct wlr_wl_shell_surface *surface = wl_resource_get_user_data(resource);
 | 
				
			||||||
	wl_signal_emit(&surface->events.destroy, surface);
 | 
						wl_signal_emit(&surface->events.destroy, surface);
 | 
				
			||||||
	wl_list_remove(&surface->link);
 | 
						wl_list_remove(&surface->link);
 | 
				
			||||||
 | 
						free(surface->transient_state);
 | 
				
			||||||
 | 
						free(surface->popup_state);
 | 
				
			||||||
	free(surface->title);
 | 
						free(surface->title);
 | 
				
			||||||
	free(surface->class_);
 | 
						free(surface->class);
 | 
				
			||||||
	free(surface);
 | 
						free(surface);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue