diff options
author | Rui Matos <tiagomatos@gmail.com> | 2015-08-03 16:09:33 +0200 |
---|---|---|
committer | Rui Matos <tiagomatos@gmail.com> | 2015-08-05 13:50:09 +0200 |
commit | ab9dabe7251deeafdd2bff13a22f123df528c5cb (patch) | |
tree | 67919aa23dd8362b0c39894dfd912dbd95526b58 | |
parent | 7ce06928e24843c7f625616a526fa7bfc1e0bddb (diff) | |
download | mutter-ab9dabe7251deeafdd2bff13a22f123df528c5cb.tar.gz |
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
-rw-r--r-- | src/wayland/meta-wayland-surface.c | 8 |
1 files changed, 8 insertions, 0 deletions
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) { |