[gtk/backport-font-feature-pango-hb: 1/8] x11: Trap error when getting CRTC info




commit 6f79607b31dd342102b9545ae425767415b56546
Author: Jonas Ã…dahl <jadahl gmail com>
Date:   Wed Nov 17 11:14:00 2021 +0100

    x11: Trap error when getting CRTC info
    
    This should fix a race happening when RANDR changes quickly, e.g. during
    unit testing where tests change monitor configurations rapidly.

 gdk/x11/gdkscreen-x11.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)
---
diff --git a/gdk/x11/gdkscreen-x11.c b/gdk/x11/gdkscreen-x11.c
index bb4df059bc..81499ba106 100644
--- a/gdk/x11/gdkscreen-x11.c
+++ b/gdk/x11/gdkscreen-x11.c
@@ -568,9 +568,18 @@ init_randr15 (GdkScreen *screen, gboolean *changed)
 
       if (output_info->crtc)
         {
-          XRRCrtcInfo *crtc = XRRGetCrtcInfo (x11_screen->xdisplay, resources, output_info->crtc);
+          XRRCrtcInfo *crtc;
           int j;
 
+          gdk_x11_display_error_trap_push (display);
+          crtc = XRRGetCrtcInfo (x11_screen->xdisplay, resources,
+                                 output_info->crtc);
+          if (gdk_x11_display_error_trap_pop (display))
+            {
+              XRRFreeOutputInfo (output_info);
+              continue;
+            }
+
           for (j = 0; j < resources->nmode; j++)
             {
               XRRModeInfo *xmode = &resources->modes[j];


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]