output: send commit event after pending state is cleared

References: https://github.com/swaywm/wlroots/issues/2098
This commit is contained in:
Simon Ser 2021-01-10 17:08:16 +01:00
parent 1fb9535e99
commit b3e76d6678

View file

@ -612,13 +612,6 @@ bool wlr_output_commit(struct wlr_output *output) {
output->commit_seq++; output->commit_seq++;
struct wlr_output_event_commit event = {
.output = output,
.committed = output->pending.committed,
.when = &now,
};
wlr_signal_emit_safe(&output->events.commit, &event);
bool scale_updated = output->pending.committed & WLR_OUTPUT_STATE_SCALE; bool scale_updated = output->pending.committed & WLR_OUTPUT_STATE_SCALE;
if (scale_updated) { if (scale_updated) {
output->scale = output->pending.scale; output->scale = output->pending.scale;
@ -649,7 +642,16 @@ bool wlr_output_commit(struct wlr_output *output) {
output->needs_frame = false; output->needs_frame = false;
} }
uint32_t committed = output->pending.committed;
output_state_clear(&output->pending); output_state_clear(&output->pending);
struct wlr_output_event_commit event = {
.output = output,
.committed = committed,
.when = &now,
};
wlr_signal_emit_safe(&output->events.commit, &event);
return true; return true;
} }