aboutsummaryrefslogtreecommitdiff
path: root/backend/x11/output.c
diff options
context:
space:
mode:
Diffstat (limited to 'backend/x11/output.c')
-rw-r--r--backend/x11/output.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/backend/x11/output.c b/backend/x11/output.c
index c827b9d5..9d184c48 100644
--- a/backend/x11/output.c
+++ b/backend/x11/output.c
@@ -118,6 +118,21 @@ static bool output_commit(struct wlr_output *wlr_output) {
}
}
+ if (wlr_output->pending.committed & WLR_OUTPUT_STATE_ADAPTIVE_SYNC_ENABLED &&
+ x11->atoms.variable_refresh != XCB_ATOM_NONE) {
+ if (wlr_output->pending.adaptive_sync_enabled) {
+ uint32_t enabled = 1;
+ xcb_change_property(x11->xcb, XCB_PROP_MODE_REPLACE, output->win,
+ x11->atoms.variable_refresh, XCB_ATOM_CARDINAL, 32, 1,
+ &enabled);
+ wlr_output->adaptive_sync_status = WLR_OUTPUT_ADAPTIVE_SYNC_UNKNOWN;
+ } else {
+ xcb_delete_property(x11->xcb, output->win,
+ x11->atoms.variable_refresh);
+ wlr_output->adaptive_sync_status = WLR_OUTPUT_ADAPTIVE_SYNC_DISABLED;
+ }
+ }
+
if (wlr_output->pending.committed & WLR_OUTPUT_STATE_BUFFER) {
pixman_region32_t *damage = NULL;
if (wlr_output->pending.committed & WLR_OUTPUT_STATE_DAMAGE) {