]> git.eshelyaron.com Git - emacs.git/commitdiff
Restore old code in x_sync_trigger_fence
authorPo Lu <luangruo@yahoo.com>
Fri, 26 Aug 2022 01:42:35 +0000 (09:42 +0800)
committerPo Lu <luangruo@yahoo.com>
Fri, 26 Aug 2022 01:42:35 +0000 (09:42 +0800)
* src/xterm.c (x_sync_trigger_fence): Restore old code, since that
makes it easier to adapt to more than 2 sync fences (which might be
necessary in the future, if we ever decide to do frame handling
asynchronously), and is much more recognizable for people coming from
other programs.

src/xterm.c

index 5a36aa0302992b5f9ed37c29917ea03e7d00b430..b91d3a9517305a453d7508c9d65c42a9f53bd852 100644 (file)
@@ -6905,16 +6905,22 @@ x_sync_update_begin (struct frame *f)
 static void
 x_sync_trigger_fence (struct frame *f, XSyncValue value)
 {
+  uint_fast64_t n, low, high, idx;
+
   /* Sync fences aren't supported by the X server.  */
   if (FRAME_DISPLAY_INFO (f)->xsync_major < 3
       || (FRAME_DISPLAY_INFO (f)->xsync_major == 3
          && FRAME_DISPLAY_INFO (f)->xsync_minor < 1))
     return;
 
-  bool idx = !! (XSyncValueLow32 (value) & 4);
+  low = XSyncValueLow32 (value);
+  high = XSyncValueHigh32 (value);
+
+  n = low | (high << 32);
+  idx = (n / 4) % 2;
 
 #ifdef FRAME_DEBUG
-  fprintf (stderr, "Triggering synchronization fence: %d\n", idx);
+  fprintf (stderr, "Triggering synchronization fence: %lu\n", idx);
 #endif
 
   XSyncTriggerFence (FRAME_X_DISPLAY (f),