From 102341ae9f53dad735b2e637892bef3b57361b39 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: 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]; -- cgit v1.2.1