aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenny Levinsen <kl@kl.wtf>2024-08-19 13:02:55 +0200
committerSimon Ser <contact@emersion.fr>2024-09-20 19:44:03 +0200
commitb1c2155a8ec86e042bc23b949e07066fe8eacf56 (patch)
treef7e03f43e1932c36f60c840f5127f2dee9c2d2b3
parent234f18d357875c2baee083f6a7ca85ff3abdaae9 (diff)
config/output: Skip search if config has a mode
When doing an output configuration search, the intent is to only look for modes if the output's configuration does not contain a specific mode. This was done by testing if config_has_auto_mode returned false. config_has_auto_mode had its return values backwards, leading to other modes being tested if the output configuration had specified modes or modelines, leading to unwanted modes being selected. Invert the function to config_has_manual_mode to give it a clearer name, and fix the return values in the process. (cherry picked from commit f9c0f043e5ec39574c9d9b0fb3dece6169a0e67d)
-rw-r--r--sway/config/output.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/sway/config/output.c b/sway/config/output.c
index cc3bf457..d33ea11a 100644
--- a/sway/config/output.c
+++ b/sway/config/output.c
@@ -651,9 +651,9 @@ struct output_config *find_output_config(struct sway_output *sway_output) {
return result;
}
-static bool config_has_auto_mode(struct output_config *oc) {
+static bool config_has_manual_mode(struct output_config *oc) {
if (!oc) {
- return true;
+ return false;
}
if (oc->drm_mode.type != 0 && oc->drm_mode.type != (uint32_t)-1) {
return true;
@@ -754,7 +754,8 @@ static bool search_mode(struct search_context *ctx, size_t output_idx) {
struct wlr_output_state *state = &backend_state->base;
struct wlr_output *wlr_output = backend_state->output;
- if (!config_has_auto_mode(cfg->config)) {
+ // We only search for mode if one is not explicitly specified in the config
+ if (config_has_manual_mode(cfg->config)) {
return search_adaptive_sync(ctx, output_idx);
}