]> git.mdlowis.com Git - proto/labwc.git/commitdiff
src/output.c: fix adaptive sync
authorConsolatis <35009135+Consolatis@users.noreply.github.com>
Sun, 30 Apr 2023 12:32:45 +0000 (14:32 +0200)
committerJohan Malm <johanmalm@users.noreply.github.com>
Sun, 30 Apr 2023 14:12:10 +0000 (15:12 +0100)
Fixes #642

Reported-by: @heroin-moose
Tested-by: @heroin-moose
src/output.c

index 440e56de5a6c71bb00ae78302a8e84ec612abe55..3a8a1bbe128dd297e55c132ff77a4252903e7304 100644 (file)
@@ -150,6 +150,17 @@ new_output_notify(struct wl_listener *listener, void *data)
                }
        }
 
+       if (rc.adaptive_sync) {
+               wlr_output_enable_adaptive_sync(wlr_output, true);
+               if (!wlr_output_test(wlr_output)) {
+                       wlr_output_enable_adaptive_sync(wlr_output, false);
+                       wlr_log(WLR_DEBUG,
+                               "failed to enable adaptive sync for output %s", wlr_output->name);
+               } else {
+                       wlr_log(WLR_INFO, "adaptive sync enabled for output %s", wlr_output->name);
+               }
+       }
+
        wlr_output_commit(wlr_output);
 
        struct output *output = znew(*output);
@@ -206,20 +217,6 @@ new_output_notify(struct wl_listener *listener, void *data)
        wlr_scene_node_raise_to_top(&output->layer_popup_tree->node);
        wlr_scene_node_raise_to_top(&output->session_lock_tree->node);
 
-       if (rc.adaptive_sync) {
-               wlr_log(WLR_INFO, "enable adaptive sync on %s", wlr_output->name);
-               struct wlr_output_state pending = { 0 };
-               wlr_output_state_set_adaptive_sync_enabled(&pending, true);
-               if (!wlr_output_test_state(wlr_output, &pending)) {
-                       wlr_log(WLR_ERROR, "adaptive sync failed, ignoring");
-                       wlr_output_state_set_adaptive_sync_enabled(&pending, false);
-               }
-               if (!wlr_output_commit_state(wlr_output, &pending)) {
-                       wlr_log(WLR_ERROR, "failed to commit output %s",
-                               wlr_output->name);
-               }
-       }
-
        /*
         * Wait until wlr_output_layout_add_auto() returns before
         * calling do_output_layout_change(); this ensures that the
@@ -310,6 +307,7 @@ output_config_apply(struct server *server,
                        }
                        wlr_output_set_scale(o, head->state.scale);
                        wlr_output_set_transform(o, head->state.transform);
+                       wlr_output_enable_adaptive_sync(o, head->state.adaptive_sync_enabled);
                }
                if (!wlr_output_commit(o)) {
                        wlr_log(WLR_ERROR, "Output config commit failed");