[gtk: 1/2] x11: Trap error when getting CRTC info




commit b9bdbe9aaecf0aa0726637b8c5466c6e2ff7bfd6
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 e84645bf17..bde0b7dd54 100644
--- a/gdk/x11/gdkscreen-x11.c
+++ b/gdk/x11/gdkscreen-x11.c
@@ -492,9 +492,18 @@ init_randr15 (GdkX11Screen *x11_screen)
 
       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]