Move `output->enabled` guard into output functions
This simplifies the API for output disabling and enabling. We do not need to check beforehand if the invariants hold but can bail out if we happen to find out during enable/disable of a monitor (e.g. double disable/enable).
This commit is contained in:
parent
7da20bc57e
commit
dfd72dea7d
|
@ -142,9 +142,7 @@ disable_outputs(void)
|
|||
|
||||
struct hikari_output *output;
|
||||
wl_list_for_each (output, &hikari_server.outputs, server_outputs) {
|
||||
if (output->enabled) {
|
||||
hikari_output_disable(output);
|
||||
}
|
||||
hikari_output_disable(output);
|
||||
|
||||
hikari_output_damage_whole(output);
|
||||
}
|
||||
|
@ -167,9 +165,7 @@ enable_outputs(void)
|
|||
|
||||
struct hikari_output *output;
|
||||
wl_list_for_each (output, &hikari_server.outputs, server_outputs) {
|
||||
if (!output->enabled) {
|
||||
hikari_output_enable(output);
|
||||
}
|
||||
hikari_output_enable(output);
|
||||
}
|
||||
|
||||
mode->outputs_disabled = false;
|
||||
|
@ -278,10 +274,7 @@ cancel(void)
|
|||
|
||||
struct hikari_output *output;
|
||||
wl_list_for_each (output, &hikari_server.outputs, server_outputs) {
|
||||
if (!output->enabled) {
|
||||
hikari_output_enable(output);
|
||||
}
|
||||
|
||||
hikari_output_enable(output);
|
||||
hikari_output_damage_whole(output);
|
||||
}
|
||||
|
||||
|
|
18
src/output.c
18
src/output.c
|
@ -113,7 +113,10 @@ void
|
|||
hikari_output_disable(struct hikari_output *output)
|
||||
{
|
||||
assert(output != NULL);
|
||||
assert(output->enabled);
|
||||
|
||||
if (!output->enabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
struct wlr_output *wlr_output = output->wlr_output;
|
||||
|
||||
|
@ -131,7 +134,10 @@ void
|
|||
hikari_output_enable(struct hikari_output *output)
|
||||
{
|
||||
assert(output != NULL);
|
||||
assert(!output->enabled);
|
||||
|
||||
if (output->enabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
struct wlr_output *wlr_output = output->wlr_output;
|
||||
|
||||
|
@ -183,9 +189,7 @@ damage_destroy_handler(struct wl_listener *listener, void *data)
|
|||
struct hikari_output *output =
|
||||
wl_container_of(listener, output, damage_destroy);
|
||||
|
||||
if (output->enabled) {
|
||||
hikari_output_disable(output);
|
||||
}
|
||||
hikari_output_disable(output);
|
||||
}
|
||||
|
||||
#ifdef HAVE_LAYERSHELL
|
||||
|
@ -303,9 +307,7 @@ hikari_output_fini(struct hikari_output *output)
|
|||
close_layers(&output->layers[ZWLR_LAYER_SHELL_V1_LAYER_BACKGROUND]);
|
||||
#endif
|
||||
|
||||
if (output->enabled) {
|
||||
hikari_output_disable(output);
|
||||
}
|
||||
hikari_output_disable(output);
|
||||
|
||||
wl_list_remove(&output->destroy.link);
|
||||
|
||||
|
|
Loading…
Reference in New Issue