xdg-shell-v6: fix wl_list_remove called twice

This commit is contained in:
emersion 2018-03-15 20:14:47 +01:00
parent 361d7c857e
commit 42cc575266
No known key found for this signature in database
GPG key ID: 0FDE7BE0E88F5E48

View file

@ -506,8 +506,7 @@ static void xdg_popup_handle_destroy(struct wl_client *client,
if (topmost != surface) { if (topmost != surface) {
wl_resource_post_error(surface->client->resource, wl_resource_post_error(surface->client->resource,
ZXDG_SHELL_V6_ERROR_NOT_THE_TOPMOST_POPUP, ZXDG_SHELL_V6_ERROR_NOT_THE_TOPMOST_POPUP,
"xdg_popup was destroyed while it was not the topmost " "xdg_popup was destroyed while it was not the topmost popup");
"popup");
return; return;
} }
@ -805,8 +804,8 @@ static void xdg_toplevel_handle_set_minimized(struct wl_client *client,
wlr_signal_emit_safe(&surface->events.request_minimize, surface); wlr_signal_emit_safe(&surface->events.request_minimize, surface);
} }
static const struct zxdg_toplevel_v6_interface zxdg_toplevel_v6_implementation = static const struct zxdg_toplevel_v6_interface
{ zxdg_toplevel_v6_implementation = {
.destroy = resource_handle_destroy, .destroy = resource_handle_destroy,
.set_parent = xdg_toplevel_handle_set_parent, .set_parent = xdg_toplevel_handle_set_parent,
.set_title = xdg_toplevel_handle_set_title, .set_title = xdg_toplevel_handle_set_title,
@ -820,7 +819,7 @@ static const struct zxdg_toplevel_v6_interface zxdg_toplevel_v6_implementation =
.unset_maximized = xdg_toplevel_handle_unset_maximized, .unset_maximized = xdg_toplevel_handle_unset_maximized,
.set_fullscreen = xdg_toplevel_handle_set_fullscreen, .set_fullscreen = xdg_toplevel_handle_set_fullscreen,
.unset_fullscreen = xdg_toplevel_handle_unset_fullscreen, .unset_fullscreen = xdg_toplevel_handle_unset_fullscreen,
.set_minimized = xdg_toplevel_handle_set_minimized .set_minimized = xdg_toplevel_handle_set_minimized,
}; };
static void xdg_surface_resource_destroy(struct wl_resource *resource) { static void xdg_surface_resource_destroy(struct wl_resource *resource) {
@ -902,11 +901,8 @@ static void xdg_surface_handle_ack_configure(struct wl_client *client,
struct wlr_xdg_surface_v6_configure *configure, *tmp; struct wlr_xdg_surface_v6_configure *configure, *tmp;
wl_list_for_each_safe(configure, tmp, &surface->configure_list, link) { wl_list_for_each_safe(configure, tmp, &surface->configure_list, link) {
if (configure->serial < serial) { if (configure->serial < serial) {
wl_list_remove(&configure->link);
xdg_surface_configure_destroy(configure); xdg_surface_configure_destroy(configure);
} else if (configure->serial == serial) { } else if (configure->serial == serial) {
wl_list_remove(&configure->link);
wl_list_init(&configure->link);
found = true; found = true;
break; break;
} else { } else {