wayland: Add event queue dispatch helper
authorJonas Ådahl <jadahl@gmail.com>
Sat, 11 Feb 2023 22:13:39 +0000 (23:13 +0100)
committerJonas Ådahl <jadahl@gmail.com>
Sat, 11 Feb 2023 22:13:39 +0000 (23:13 +0100)
Dispatch failing should always fatal; use a helper to centralize the
error handling everywhere.

gdk/wayland/gdkdisplay-wayland.c
gdk/wayland/gdkdisplay-wayland.h
gdk/wayland/gdkpopup-wayland.c
gdk/wayland/gdktoplevel-wayland.c

index 99caeb20d5adfec22aea2098e95e735b957c6b68..67fa059e99134e7dc7d1af24f928a675e408b6de 100644 (file)
@@ -2694,3 +2694,17 @@ gdk_wayland_display_query_registry (GdkDisplay  *display,
 
   return FALSE;
 }
+
+void
+gdk_wayland_display_dispatch_queue (GdkDisplay            *display,
+                                    struct wl_event_queue *event_queue)
+{
+  GdkWaylandDisplay *display_wayland = GDK_WAYLAND_DISPLAY (display);
+
+  if (wl_display_dispatch_queue (display_wayland->wl_display, event_queue) == -1)
+    {
+      g_message ("Error %d (%s) dispatching to Wayland display.",
+                 errno, g_strerror (errno));
+      _exit (1);
+    }
+}
index 40f101f9fffe91abb1dd3262e20905ed1efb36ed..213680361b4e40afdcf6766b8588c900e14766ca 100644 (file)
@@ -158,6 +158,9 @@ struct _GdkWaylandDisplayClass
 
 gboolean                gdk_wayland_display_prefers_ssd         (GdkDisplay *display);
 
+void gdk_wayland_display_dispatch_queue (GdkDisplay            *display,
+                                         struct wl_event_queue *event_queue);
+
 G_END_DECLS
 
 #endif  /* __GDK_WAYLAND_DISPLAY__ */
index 125e70e638c26232725c5f22000cb356a02cdbd5..a79670aef28c7a2d066cc0ea91324681f01e5297 100644 (file)
@@ -1334,8 +1334,6 @@ gdk_wayland_surface_present_popup (GdkWaylandPopup *wayland_popup,
                                    GdkPopupLayout  *layout)
 {
   GdkSurface *surface = GDK_SURFACE (wayland_popup);
-  GdkWaylandDisplay *display_wayland =
-    GDK_WAYLAND_DISPLAY (gdk_surface_get_display (surface));
   GdkWaylandSurface *wayland_surface = GDK_WAYLAND_SURFACE (wayland_popup);
 
   if (!wayland_surface->mapped)
@@ -1389,13 +1387,8 @@ gdk_wayland_surface_present_popup (GdkWaylandPopup *wayland_popup,
 
   while (wayland_popup->display_server.xdg_popup && !is_relayout_finished (surface))
     {
-      if (wl_display_dispatch_queue (display_wayland->wl_display,
-                                     wayland_surface->event_queue) == -1)
-        {
-          g_message ("Error %d (%s) dispatching to Wayland display.",
-                     errno, g_strerror (errno));
-          _exit (1);
-        }
+      gdk_wayland_display_dispatch_queue (surface->display,
+                                          wayland_surface->event_queue);
     }
 
   if (wayland_popup->display_server.xdg_popup)
index 7a74967c8d1afb9f4369096c9f18d393146d1374..c198477612e71fd20827a3c36e73905a0fd921e0 100644 (file)
@@ -2120,13 +2120,8 @@ gdk_wayland_toplevel_focus (GdkToplevel *toplevel,
 
           while (startup_id == NULL)
             {
-              if (wl_display_dispatch_queue (display_wayland->wl_display,
-                                             event_queue) == -1)
-                {
-                  g_message ("Error %d (%s) dispatching to Wayland display.",
-                             errno, g_strerror (errno));
-                  _exit (1);
-                }
+              gdk_wayland_display_dispatch_queue (GDK_DISPLAY (display_wayland),
+                                                  event_queue);
             }
 
           xdg_activation_token_v1_destroy (token);