[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 3775156990: Disable extended frame synchronization by default
From: |
Po Lu |
Subject: |
master 3775156990: Disable extended frame synchronization by default |
Date: |
Sun, 6 Feb 2022 06:52:03 -0500 (EST) |
branch: master
commit 37751569902a8c1073bea64059f01540221d7361
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>
Disable extended frame synchronization by default
* doc/emacs/xresources.texi (Table of Resources): Document
new possible value of `synchronizeResize'.
* src/xfns.c (Fx_create_frame): Set synchronization protocol
according to `synchronizeResize'.
---
doc/emacs/xresources.texi | 5 ++++-
src/xfns.c | 22 +++++++++++++++++-----
2 files changed, 21 insertions(+), 6 deletions(-)
diff --git a/doc/emacs/xresources.texi b/doc/emacs/xresources.texi
index 5e01c955d1..c7c6c072ee 100644
--- a/doc/emacs/xresources.texi
+++ b/doc/emacs/xresources.texi
@@ -379,7 +379,10 @@ manager when it has finished redrawing the display in
response to a
request to resize a frame. Otherwise, the window manager will
postpone drawing a frame that was just resized until its contents are
updated, which prevents blank areas of a frame that have not yet been
-painted from being displayed.
+painted from being displayed. If set to @samp{extended}, it will
+enable use of extended frame synchronization, which might be supported
+by some compositing window managers which don't support basic
+synchronization.
@item @code{verticalScrollBars} (class @code{ScrollBars})
Give frames scroll bars on the left if @samp{left}, on the right if
diff --git a/src/xfns.c b/src/xfns.c
index 1ed4f03205..2b8a1abdfe 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -4815,15 +4815,25 @@ This function is an internal primitive--use
`make-frame' instead. */)
XSyncValue initial_value;
XSyncCounter counters[2];
+ AUTO_STRING (synchronizeResize, "synchronizeResize");
+ AUTO_STRING (SynchronizeResize, "SynchronizeResize");
+
+ Lisp_Object value = gui_display_get_resource (dpyinfo,
+ synchronizeResize,
+ SynchronizeResize,
+ Qnil, Qnil);
+
XSyncIntToValue (&initial_value, 0);
counters[0]
= FRAME_X_BASIC_COUNTER (f)
= XSyncCreateCounter (FRAME_X_DISPLAY (f),
initial_value);
- counters[1]
- = FRAME_X_EXTENDED_COUNTER (f)
- = XSyncCreateCounter (FRAME_X_DISPLAY (f),
- initial_value);
+
+ if (STRINGP (value) && !strcmp (SSDATA (value), "extended"))
+ counters[1]
+ = FRAME_X_EXTENDED_COUNTER (f)
+ = XSyncCreateCounter (FRAME_X_DISPLAY (f),
+ initial_value);
FRAME_X_OUTPUT (f)->current_extended_counter_value
= initial_value;
@@ -4831,7 +4841,9 @@ This function is an internal primitive--use `make-frame'
instead. */)
XChangeProperty (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f),
dpyinfo->Xatom_net_wm_sync_request_counter,
XA_CARDINAL, 32, PropModeReplace,
- (unsigned char *) &counters, 2);
+ (unsigned char *) &counters,
+ ((STRINGP (value)
+ && !strcmp (SSDATA (value), "extended")) ? 2 : 1));
#endif
}
#endif
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 3775156990: Disable extended frame synchronization by default,
Po Lu <=