wayland: xdg-activation: Don't assume there's a focus surface
authorGuido Günther <agx@sigxcpu.org>
Tue, 11 Jan 2022 19:21:55 +0000 (20:21 +0100)
committerCarlos Garnacho <carlosg@gnome.org>
Wed, 16 Mar 2022 18:50:21 +0000 (19:50 +0100)
Tools like gtk4-launch can't set surface on the activation token so
don't require it. If the compositor requires it we can't do anything
about it anyway. This avoids a critical:

   (gtk4-launch:23497): Gdk-CRITICAL **: 17:07:24.704: gdk_wayland_surface_get_wl_surface: assertion 'GDK_IS_WAYLAND_SURFACE (surface)' failed

Fixes: be4216e051 ("gdk/wayland: Support the xdg-activation wayland protocol")
Signed-off-by: Guido Günther <agx@sigxcpu.org>
gdk/wayland/gdkapplaunchcontext-wayland.c

index c9498e507c2a81d848c2a190bc006e11e05ae07d..c8bf5afd25489040c7f5d8ad1e637edd83db6f72 100644 (file)
@@ -73,8 +73,9 @@ 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)));
-      xdg_activation_token_v1_set_surface (token,
-                                           gdk_wayland_surface_get_wl_surface (focus_surface));
+      if (focus_surface)
+        xdg_activation_token_v1_set_surface (token,
+                                             gdk_wayland_surface_get_wl_surface (focus_surface));
       xdg_activation_token_v1_commit (token);
 
       while (app_launch_data.token == NULL)