Stop calling apply_output_config from output_enable
The only output_enable caller is now apply_output_config. Stop calling apply_output_config from output_enable to simplify the code and avoid the back-and-forth between these two functions. output_enable is now the symmetric of output_disable: it just marks the output as enabled and performs bookkeeping (e.g. creating teh default workspace). It is called from apply_output_config after the output commit, so that it can read the current output state and act accordingly. This change also allows us to avoid an extraneous wlr_output_commit. References: https://github.com/swaywm/sway/issues/4921
This commit is contained in:
parent
5e90080468
commit
f5fa0c7124
|
@ -101,7 +101,7 @@ struct sway_output *all_output_by_name_or_id(const char *name_or_id);
|
||||||
|
|
||||||
void output_sort_workspaces(struct sway_output *output);
|
void output_sort_workspaces(struct sway_output *output);
|
||||||
|
|
||||||
bool output_enable(struct sway_output *output, struct output_config *oc);
|
void output_enable(struct sway_output *output);
|
||||||
|
|
||||||
void output_disable(struct sway_output *output);
|
void output_disable(struct sway_output *output);
|
||||||
|
|
||||||
|
|
|
@ -343,14 +343,6 @@ bool apply_output_config(struct output_config *oc, struct sway_output *output) {
|
||||||
}
|
}
|
||||||
wlr_output_enable(wlr_output, false);
|
wlr_output_enable(wlr_output, false);
|
||||||
return wlr_output_commit(wlr_output);
|
return wlr_output_commit(wlr_output);
|
||||||
} else if (!output->enabled) {
|
|
||||||
// Output is not enabled. Enable it, output_enable will call us again.
|
|
||||||
if (!oc || oc->dpms_state != DPMS_OFF) {
|
|
||||||
sway_log(SWAY_DEBUG, "Enabling output %s", oc->name);
|
|
||||||
wlr_output_enable(wlr_output, true);
|
|
||||||
wlr_output_commit(wlr_output);
|
|
||||||
}
|
|
||||||
return output_enable(output, oc);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!oc || oc->dpms_state != DPMS_OFF) {
|
if (!oc || oc->dpms_state != DPMS_OFF) {
|
||||||
|
@ -440,6 +432,10 @@ bool apply_output_config(struct output_config *oc, struct sway_output *output) {
|
||||||
output->width = output_box->width;
|
output->width = output_box->width;
|
||||||
output->height = output_box->height;
|
output->height = output_box->height;
|
||||||
|
|
||||||
|
if ((!oc || oc->enabled) && !output->enabled) {
|
||||||
|
output_enable(output);
|
||||||
|
}
|
||||||
|
|
||||||
if (oc && oc->dpms_state == DPMS_OFF) {
|
if (oc && oc->dpms_state == DPMS_OFF) {
|
||||||
sway_log(SWAY_DEBUG, "Turning off output %s", oc->name);
|
sway_log(SWAY_DEBUG, "Turning off output %s", oc->name);
|
||||||
wlr_output_enable(wlr_output, false);
|
wlr_output_enable(wlr_output, false);
|
||||||
|
|
|
@ -105,9 +105,9 @@ struct sway_output *output_create(struct wlr_output *wlr_output) {
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool output_enable(struct sway_output *output, struct output_config *oc) {
|
void output_enable(struct sway_output *output) {
|
||||||
if (!sway_assert(!output->enabled, "output is already enabled")) {
|
if (!sway_assert(!output->enabled, "output is already enabled")) {
|
||||||
return false;
|
return;
|
||||||
}
|
}
|
||||||
struct wlr_output *wlr_output = output->wlr_output;
|
struct wlr_output *wlr_output = output->wlr_output;
|
||||||
size_t len = sizeof(output->layers) / sizeof(output->layers[0]);
|
size_t len = sizeof(output->layers) / sizeof(output->layers[0]);
|
||||||
|
@ -116,11 +116,6 @@ bool output_enable(struct sway_output *output, struct output_config *oc) {
|
||||||
}
|
}
|
||||||
|
|
||||||
output->enabled = true;
|
output->enabled = true;
|
||||||
if (!apply_output_config(oc, output)) {
|
|
||||||
output->enabled = false;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
output->configured = true;
|
output->configured = true;
|
||||||
list_add(root->outputs, output);
|
list_add(root->outputs, output);
|
||||||
|
|
||||||
|
@ -156,8 +151,6 @@ bool output_enable(struct sway_output *output, struct output_config *oc) {
|
||||||
|
|
||||||
arrange_layers(output);
|
arrange_layers(output);
|
||||||
arrange_root();
|
arrange_root();
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void evacuate_sticky(struct sway_workspace *old_ws,
|
static void evacuate_sticky(struct sway_workspace *old_ws,
|
||||||
|
|
Loading…
Reference in a new issue