diff options
-rw-r--r-- | include/wlr/types/wlr_output.h | 7 | ||||
-rw-r--r-- | types/output/state.c | 12 |
2 files changed, 19 insertions, 0 deletions
diff --git a/include/wlr/types/wlr_output.h b/include/wlr/types/wlr_output.h index 93943f0d..3ca8863a 100644 --- a/include/wlr/types/wlr_output.h +++ b/include/wlr/types/wlr_output.h @@ -573,6 +573,13 @@ void wlr_output_state_set_buffer(struct wlr_output_state *state, struct wlr_buffer *buffer); bool wlr_output_state_set_gamma_lut(struct wlr_output_state *state, size_t ramp_size, const uint16_t *r, const uint16_t *g, const uint16_t *b); +/** + * Sets the state's damage region. + * + * This should be called in along with wlr_output_state_set_buffer(). + */ +void wlr_output_state_set_damage(struct wlr_output_state *state, + const pixman_region32_t *damage); /** diff --git a/types/output/state.c b/types/output/state.c index cbbdc5c0..0bb384a8 100644 --- a/types/output/state.c +++ b/types/output/state.c @@ -76,6 +76,18 @@ void wlr_output_state_set_buffer(struct wlr_output_state *state, state->buffer = wlr_buffer_lock(buffer); } +void wlr_output_state_set_damage(struct wlr_output_state *state, + const pixman_region32_t *damage) { + if (state->committed & WLR_OUTPUT_STATE_DAMAGE) { + pixman_region32_fini(&state->damage); + } + + state->committed |= WLR_OUTPUT_STATE_DAMAGE; + + pixman_region32_init(&state->damage); + pixman_region32_copy(&state->damage, damage); +} + bool wlr_output_state_set_gamma_lut(struct wlr_output_state *state, size_t ramp_size, const uint16_t *r, const uint16_t *g, const uint16_t *b) { uint16_t *gamma_lut = NULL; |