xwayland/xwm: don't insert surface in list on error

In case wl_event_loop_add_timer errors out, don't insert the free'd
wlr_xwayland_surface in the list.

Closes: https://github.com/swaywm/wlroots/issues/1721
This commit is contained in:
Simon Ser 2020-07-21 12:05:04 +02:00 committed by Drew DeVault
parent 9686895b4e
commit cd4827b3b6

View file

@ -141,7 +141,6 @@ static struct wlr_xwayland_surface *xwayland_surface_create(
surface->width = width; surface->width = width;
surface->height = height; surface->height = height;
surface->override_redirect = override_redirect; surface->override_redirect = override_redirect;
wl_list_insert(&xwm->surfaces, &surface->link);
wl_list_init(&surface->children); wl_list_init(&surface->children);
wl_list_init(&surface->parent_link); wl_list_init(&surface->parent_link);
wl_signal_init(&surface->events.destroy); wl_signal_init(&surface->events.destroy);
@ -182,6 +181,8 @@ static struct wlr_xwayland_surface *xwayland_surface_create(
return NULL; return NULL;
} }
wl_list_insert(&xwm->surfaces, &surface->link);
wlr_signal_emit_safe(&xwm->xwayland->events.new_surface, surface); wlr_signal_emit_safe(&xwm->xwayland->events.new_surface, surface);
return surface; return surface;