[gtk/wip/carlosg/activation-roundtrip-fix-4.6: 2/2] gdk/wayland: Check the GdkSurface wl_surface before using it for activation
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip/carlosg/activation-roundtrip-fix-4.6: 2/2] gdk/wayland: Check the GdkSurface wl_surface before using it for activation
- Date: Fri, 3 Jun 2022 11:06:14 +0000 (UTC)
commit 1cdb6ada4e0f289389cfc61a7543b03a00539fb2
Author: Carlos Garnacho <carlosg gnome org>
Date: Thu Jun 2 23:05:39 2022 +0200
gdk/wayland: Check the GdkSurface wl_surface before using it for activation
Double check the GdkSurface has a wl_surface before using it as the activation
token source, since we cannot use NULL surfaces here.
Fixes: https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/1862
(cherry-picked from commit 4b41d4f78ce71b60f0d51837cd1b6a1b346d679d)
gdk/wayland/gdkapplaunchcontext-wayland.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
---
diff --git a/gdk/wayland/gdkapplaunchcontext-wayland.c b/gdk/wayland/gdkapplaunchcontext-wayland.c
index 80cc3ffaf4..ed3c4772b1 100644
--- a/gdk/wayland/gdkapplaunchcontext-wayland.c
+++ b/gdk/wayland/gdkapplaunchcontext-wayland.c
@@ -60,6 +60,7 @@ gdk_wayland_app_launch_context_get_startup_notify_id (GAppLaunchContext *context
{
struct xdg_activation_token_v1 *token;
struct wl_event_queue *event_queue;
+ struct wl_surface *wl_surface = NULL;
GdkWaylandSeat *seat;
GdkSurface *focus_surface;
AppLaunchData app_launch_data = { 0 };
@@ -67,7 +68,6 @@ gdk_wayland_app_launch_context_get_startup_notify_id (GAppLaunchContext *context
event_queue = wl_display_create_queue (display->wl_display);
seat = GDK_WAYLAND_SEAT (gdk_display_get_default_seat (GDK_DISPLAY (display)));
- focus_surface = gdk_wayland_device_get_focus (gdk_seat_get_keyboard (GDK_SEAT (seat)));
token = xdg_activation_v1_get_activation_token (display->xdg_activation);
wl_proxy_set_queue ((struct wl_proxy *) token, event_queue);
@@ -77,9 +77,13 @@ gdk_wayland_app_launch_context_get_startup_notify_id (GAppLaunchContext *context
xdg_activation_token_v1_set_serial (token,
_gdk_wayland_seat_get_last_implicit_grab_serial (seat, NULL),
gdk_wayland_seat_get_wl_seat (GDK_SEAT (seat)));
+
+ focus_surface = gdk_wayland_device_get_focus (gdk_seat_get_keyboard (GDK_SEAT (seat)));
if (focus_surface)
- xdg_activation_token_v1_set_surface (token,
- gdk_wayland_surface_get_wl_surface (focus_surface));
+ wl_surface = gdk_wayland_surface_get_wl_surface (focus_surface);
+ if (wl_surface)
+ xdg_activation_token_v1_set_surface (token, wl_surface);
+
xdg_activation_token_v1_commit (token);
while (app_launch_data.token == NULL)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]