]> git.eshelyaron.com Git - emacs.git/commitdiff
Makeshift solution for X server bug
authorPo Lu <luangruo@yahoo.com>
Mon, 18 Mar 2024 01:14:18 +0000 (09:14 +0800)
committerEshel Yaron <me@eshelyaron.com>
Mon, 18 Mar 2024 15:44:37 +0000 (16:44 +0100)
* src/xterm.c (x_sync_init_fences): Detect errors around
XSyncCreateFence.  (bug#69762)

(cherry picked from commit 1a8b34a503e5af32851c1aac27a3f09e2345673b)

src/xterm.c

index c30015ec8f0ceb0ec67e9ecb218e335e6c701e4b..b30a2485148b20ac57c01cacd828599d519bee81 100644 (file)
@@ -7292,6 +7292,11 @@ x_sync_init_fences (struct frame *f)
          && dpyinfo->xsync_minor < 1))
     return;
 
+  /* Suppress errors around XSyncCreateFence requests, since its
+     implementations on certain X servers erroneously reject valid
+     drawables, such as the frame's inner window.  (bug#69762) */
+
+  x_catch_errors (dpyinfo->display);
   output->sync_fences[0]
     = XSyncCreateFence (FRAME_X_DISPLAY (f),
                        /* The drawable given below is only used to
@@ -7303,6 +7308,9 @@ x_sync_init_fences (struct frame *f)
     = XSyncCreateFence (FRAME_X_DISPLAY (f),
                        FRAME_X_WINDOW (f),
                        False);
+  if (x_had_errors_p (dpyinfo->display))
+    output->sync_fences[1] = output->sync_fences[0] = None;
+  x_uncatch_errors_after_check ();
 
   XChangeProperty (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f),
                   dpyinfo->Xatom_net_wm_sync_fences, XA_CARDINAL,