output: add wlr_output_set_layers()

Simon Ser 2 years ago
parent 2f29b0c438
commit 3e0ce761ad

@ -434,6 +434,16 @@ uint32_t wlr_output_preferred_read_format(struct wlr_output *output);
*/ */
void wlr_output_set_damage(struct wlr_output *output, void wlr_output_set_damage(struct wlr_output *output,
const pixman_region32_t *damage); const pixman_region32_t *damage);
/**
* Set the output layers state.
*
* See struct wlr_output_layer for more details on output layers.
*
* This state is double-buffered, see wlr_output_commit(). The layers array
* must remain valid until the wlr_output_test() or wlr_output_commit() call.
*/
void wlr_output_set_layers(struct wlr_output *output,
struct wlr_output_layer_state *layers, size_t layers_len);
/** /**
* Test whether the pending output state would be accepted by the backend. If * Test whether the pending output state would be accepted by the backend. If
* this function returns true, wlr_output_commit() can only fail due to a * this function returns true, wlr_output_commit() can only fail due to a

@ -21,7 +21,8 @@
* *
* To configure output layers, callers should call wlr_output_layer_create() to * To configure output layers, callers should call wlr_output_layer_create() to
* create layers, attach struct wlr_output_layer_state onto * create layers, attach struct wlr_output_layer_state onto
* struct wlr_output_state to describe their new state, and commit the output. * struct wlr_output_state via wlr_output_set_layers() to describe their new
* state, and commit the output via wlr_output_commit().
* *
* Backends may have arbitrary limitations when it comes to displaying output * Backends may have arbitrary limitations when it comes to displaying output
* layers. Backends indicate whether or not a layer can be displayed via * layers. Backends indicate whether or not a layer can be displayed via

@ -486,6 +486,13 @@ void wlr_output_set_damage(struct wlr_output *output,
output->pending.committed |= WLR_OUTPUT_STATE_DAMAGE; output->pending.committed |= WLR_OUTPUT_STATE_DAMAGE;
} }
void wlr_output_set_layers(struct wlr_output *output,
struct wlr_output_layer_state *layers, size_t layers_len) {
output->pending.committed |= WLR_OUTPUT_STATE_LAYERS;
output->pending.layers = layers;
output->pending.layers_len = layers_len;
}
static void output_state_clear_gamma_lut(struct wlr_output_state *state) { static void output_state_clear_gamma_lut(struct wlr_output_state *state) {
free(state->gamma_lut); free(state->gamma_lut);
state->gamma_lut = NULL; state->gamma_lut = NULL;

Loading…
Cancel
Save