aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/wlr/types/wlr_output.h7
-rw-r--r--types/wlr_output.c10
2 files changed, 13 insertions, 4 deletions
diff --git a/include/wlr/types/wlr_output.h b/include/wlr/types/wlr_output.h
index 075d09a1..41423b58 100644
--- a/include/wlr/types/wlr_output.h
+++ b/include/wlr/types/wlr_output.h
@@ -163,7 +163,7 @@ struct wlr_output {
// Emitted right before commit
struct wl_signal precommit; // wlr_output_event_precommit
// Emitted right after commit
- struct wl_signal commit;
+ struct wl_signal commit; // wlr_output_event_commit
// Emitted right after the buffer has been presented to the user
struct wl_signal present; // wlr_output_event_present
struct wl_signal enable;
@@ -198,6 +198,11 @@ struct wlr_output_event_precommit {
struct timespec *when;
};
+struct wlr_output_event_commit {
+ struct wlr_output *output;
+ uint32_t committed; // bitmask of enum wlr_output_state_field
+};
+
enum wlr_output_present_flag {
// The presentation was synchronized to the "vertical retrace" by the
// display hardware such that tearing does not happen.
diff --git a/types/wlr_output.c b/types/wlr_output.c
index 9d02ec3c..1c40a147 100644
--- a/types/wlr_output.c
+++ b/types/wlr_output.c
@@ -581,11 +581,11 @@ bool wlr_output_commit(struct wlr_output *output) {
struct timespec now;
clock_gettime(CLOCK_MONOTONIC, &now);
- struct wlr_output_event_precommit event = {
+ struct wlr_output_event_precommit pre_event = {
.output = output,
.when = &now,
};
- wlr_signal_emit_safe(&output->events.precommit, &event);
+ wlr_signal_emit_safe(&output->events.precommit, &pre_event);
if (!output->impl->commit(output)) {
output_state_clear(&output->pending);
@@ -604,7 +604,11 @@ bool wlr_output_commit(struct wlr_output *output) {
output->commit_seq++;
- wlr_signal_emit_safe(&output->events.commit, output);
+ struct wlr_output_event_commit event = {
+ .output = output,
+ .committed = output->pending.committed,
+ };
+ wlr_signal_emit_safe(&output->events.commit, &event);
bool scale_updated = output->pending.committed & WLR_OUTPUT_STATE_SCALE;
if (scale_updated) {