From ab9dabe7251deeafdd2bff13a22f123df528c5cb Mon Sep 17 00:00:00 2001 From: Rui Matos Date: Mon, 3 Aug 2015 16:09:33 +0200 Subject: [PATCH] wayland-surface: Don't crash if clients commit to a done popup If we can't put up a popup because grabbing the pointer fails we immediately dismiss the popup but the client might have made requests already, in particular it might have commited the surface and in that case we should ignore it. https://bugzilla.gnome.org/show_bug.cgi?id=753237 --- src/wayland/meta-wayland-surface.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/wayland/meta-wayland-surface.c b/src/wayland/meta-wayland-surface.c index e4a4e5a97..ef9edf61a 100644 --- a/src/wayland/meta-wayland-surface.c +++ b/src/wayland/meta-wayland-surface.c @@ -256,6 +256,12 @@ toplevel_surface_commit (MetaWaylandSurface *surface, return; } } + else if (surface->role == META_WAYLAND_SURFACE_ROLE_XDG_POPUP) + { + /* Ignore commits if we couldn't grab the pointer */ + if (!window) + return; + } else { if (surface->buffer == NULL) @@ -268,6 +274,8 @@ toplevel_surface_commit (MetaWaylandSurface *surface, } } + g_assert (window != NULL); + /* We resize X based surfaces according to X events */ if (window->client_type == META_WINDOW_CLIENT_TYPE_WAYLAND) {