From b9bdbe9aaecf0aa0726637b8c5466c6e2ff7bfd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Wed, 17 Nov 2021 11:14:00 +0100 Subject: [PATCH] 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];