dwl

My patch set and modifications to dwl
git clone git://git.ethandl.dev/dwl
Log | Files | Refs | README | LICENSE

commit ab032822958dd3041f478c48498f17e5d259dd6f
parent 3747b3162ea062fb4630e63cee1a8ad57de87a81
Author: Devin J. Pohly <djpohly@gmail.com>
Date:   Mon, 18 Jan 2021 15:02:15 -0600

commit entire output config, or fail and rollback

The wlr-output-management protocol requires that either all of the
changes from an apply request be applied successfully, in which case a
"succeeded" event is sent, or all of the changes are reverted and a
"failed" event is sent.  As written, this could partially commit
changes, then fail.

Test the changes first (even for an "apply" event), then commit or
rollback as appropriate.

Diffstat:
Mdwl.c | 13++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/dwl.c b/dwl.c @@ -1545,11 +1545,14 @@ outputmgrapplyortest(struct wlr_output_configuration_v1 *config, int test) } } - if (test) { - ok &= wlr_output_test(wlr_output); - wlr_output_rollback(wlr_output); - } else - ok &= wlr_output_commit(wlr_output); + if (!(ok = wlr_output_test(wlr_output))) + break; + } + wl_list_for_each(config_head, &config->heads, link) { + if (ok && !test) + wlr_output_commit(config_head->state.output); + else + wlr_output_rollback(config_head->state.output); } if (ok) wlr_output_configuration_v1_send_succeeded(config);