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.
1 files changed, 8 insertions(+), 5 deletions(-) M dwl.c
M dwl.c => dwl.c +8 -5
@@ 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);