summaryrefslogtreecommitdiff
path: root/src/xterm.h
diff options
context:
space:
mode:
authorPo Lu <luangruo@yahoo.com>2022-11-27 19:17:38 +0800
committerPo Lu <luangruo@yahoo.com>2022-11-27 19:21:03 +0800
commit80bfd6dc5bc3738db595a4972893b149b1224800 (patch)
treea1a8022a247da2ca43dfb163210ae01bbfe2802d /src/xterm.h
parentea2f2f1e71188a4b0ff3fa390914d8ca23deacb9 (diff)
downloademacs-80bfd6dc5bc3738db595a4972893b149b1224800.tar.gz
Make frame synchronization more robust
* src/xterm.c (x_sync_wait_for_frame_drawn_event) (x_sync_handle_frame_drawn): Only cancel frame synchronization if hanging twice or more in a row. * src/xterm.h (struct x_output, FRAME_X_DRAW_JUST_HUNG): New flag.
Diffstat (limited to 'src/xterm.h')
-rw-r--r--src/xterm.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/xterm.h b/src/xterm.h
index c36920081d3..ee429e9c68d 100644
--- a/src/xterm.h
+++ b/src/xterm.h
@@ -1179,6 +1179,10 @@ struct x_output
frame. */
bool_bf waiting_for_frame_p : 1;
+ /* Whether or not Emacs just skipped waiting for a frame due to a
+ timeout. */
+ bool_bf draw_just_hung_p : 1;
+
#if !defined USE_GTK && defined HAVE_CLOCK_GETTIME
/* Whether or not Emacs should wait for the compositing manager to
draw frames before starting a new frame. */
@@ -1392,6 +1396,8 @@ extern void x_mark_frame_dirty (struct frame *f);
FRAME_X_OUTPUT (f)->extended_frame_counter
#define FRAME_X_WAITING_FOR_DRAW(f) \
FRAME_X_OUTPUT (f)->waiting_for_frame_p
+#define FRAME_X_DRAW_JUST_HUNG(f) \
+ FRAME_X_OUTPUT (f)->draw_just_hung_p
#define FRAME_X_COUNTER_VALUE(f) \
FRAME_X_OUTPUT (f)->current_extended_counter_value
#endif