aboutsummaryrefslogtreecommitdiffstats
path: root/sway/config
diff options
context:
space:
mode:
authorLibravatar Brian Ashworth <bosrsf04@gmail.com>2020-02-16 01:47:59 -0500
committerLibravatar Simon Ser <contact@emersion.fr>2020-02-16 09:42:22 +0100
commit8b593677d262b9018d2bcb9093f03fbccb38c43b (patch)
tree8e13a78ca12ba442b6b8963ef67840088643d3d0 /sway/config
parentFix crash: use wlr_output->name instead of possibly missing oc->name (diff)
downloadsway-8b593677d262b9018d2bcb9093f03fbccb38c43b.tar.gz
sway-8b593677d262b9018d2bcb9093f03fbccb38c43b.tar.zst
sway-8b593677d262b9018d2bcb9093f03fbccb38c43b.zip
output: fix updating output manager config
The output manager config is created when the output is created. It is updated when the mode, transform, scale, or layout for the output changes, as well as, when the output is destroyed. Since the output->enabled property was not being set before calling apply_output_config, the output event handlers were early returning and never updating the output manager config when the output state was committed. This fixes the issue by setting output->enabled in apply_output_config below the output disabling section. There are also a few other minor changes that are required to function. Additionally, this renames output_enable to output_configure to better describe the recent changes.
Diffstat (limited to 'sway/config')
-rw-r--r--sway/config/output.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sway/config/output.c b/sway/config/output.c
index de566869..40f86b6e 100644
--- a/sway/config/output.c
+++ b/sway/config/output.c
@@ -345,6 +345,9 @@ bool apply_output_config(struct output_config *oc, struct sway_output *output) {
345 return wlr_output_commit(wlr_output); 345 return wlr_output_commit(wlr_output);
346 } 346 }
347 347
348 bool was_enabled = output->enabled;
349 output->enabled = true;
350
348 if (!oc || oc->dpms_state != DPMS_OFF) { 351 if (!oc || oc->dpms_state != DPMS_OFF) {
349 sway_log(SWAY_DEBUG, "Turning on output %s", wlr_output->name); 352 sway_log(SWAY_DEBUG, "Turning on output %s", wlr_output->name);
350 wlr_output_enable(wlr_output, true); 353 wlr_output_enable(wlr_output, true);
@@ -393,6 +396,7 @@ bool apply_output_config(struct output_config *oc, struct sway_output *output) {
393 // output disabled for now and try again when the output gets the mode 396 // output disabled for now and try again when the output gets the mode
394 // we asked for. 397 // we asked for.
395 sway_log(SWAY_ERROR, "Failed to modeset output %s", wlr_output->name); 398 sway_log(SWAY_ERROR, "Failed to modeset output %s", wlr_output->name);
399 output->enabled = was_enabled;
396 return false; 400 return false;
397 } 401 }
398 402
@@ -432,8 +436,8 @@ bool apply_output_config(struct output_config *oc, struct sway_output *output) {
432 output->width = output_box->width; 436 output->width = output_box->width;
433 output->height = output_box->height; 437 output->height = output_box->height;
434 438
435 if ((!oc || oc->enabled) && !output->enabled) { 439 if ((!oc || oc->enabled) && !output->configured) {
436 output_enable(output); 440 output_configure(output);
437 } 441 }
438 442
439 if (oc && oc->dpms_state == DPMS_OFF) { 443 if (oc && oc->dpms_state == DPMS_OFF) {