class_ -> class, free more stuff in destroy_shell_surface

This commit is contained in:
emersion 2017-09-27 23:47:39 +02:00
parent 241fec4d87
commit d6c6b7c506
No known key found for this signature in database
GPG key ID: 0FDE7BE0E88F5E48
3 changed files with 10 additions and 8 deletions

View file

@ -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;

View file

@ -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 =

View file

@ -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);
} }