Documentation for <wlr/interfaces/wlr_output.h>
Table of contents
struct wlr_output_cursor_size ¶
struct wlr_output_cursor_size { int width, height; };
struct wlr_output_impl ¶
struct wlr_output_impl { /** * Set the output cursor plane image. * * If buffer is NULL, the cursor should be hidden. * * The hotspot indicates the offset that needs to be applied to the * top-left corner of the image to match the cursor position. In other * words, the image should be displayed at (x - hotspot_x, y - hotspot_y). * The hotspot is given in the buffer's coordinate space. */ bool (*set_cursor)(struct wlr_output *output, struct wlr_buffer *buffer, int hotspot_x, int hotspot_y); /** * Set the output cursor plane position. * * The position is relative to the cursor hotspot, see set_cursor. */ bool (*move_cursor)(struct wlr_output *output, int x, int y); /** * Cleanup backend-specific resources tied to the output. */ void (*destroy)(struct wlr_output *output); /** * Check that the supplied output state is a valid configuration. * * If this function returns true, commit can only fail due to a runtime * error. */ bool (*test)(struct wlr_output *output, const struct wlr_output_state *state); /** * Commit the supplied output state. * * If a buffer has been attached, a frame event is scheduled. */ bool (*commit)(struct wlr_output *output, const struct wlr_output_state *state); /** * Get the maximum number of gamma LUT elements for each channel. * * Zero can be returned if the output doesn't support gamma LUTs. */ size_t (*get_gamma_size)(struct wlr_output *output); /** * Get the list of formats suitable for the cursor, assuming a buffer with * the specified capabilities. * * If unimplemented, the cursor buffer has no format constraint. If NULL is * returned, no format is suitable. */ const struct wlr_drm_format_set *(*get_cursor_formats)(struct wlr_output *output, uint32_t buffer_caps); /** * Get the list of sizes suitable for the cursor buffer. Attempts to use a * different size for the cursor may fail. */ const struct wlr_output_cursor_size *(*get_cursor_sizes)(struct wlr_output *output, size_t *len); /** * Get the list of DRM formats suitable for the primary buffer, * assuming a buffer with the specified capabilities. * * If unimplemented, the primary buffer has no format constraint. If NULL * is returned, no format is suitable. */ const struct wlr_drm_format_set *(*get_primary_formats)(struct wlr_output *output, uint32_t buffer_caps); };
A backend implementation of struct wlr_output.
The commit function is mandatory. Other functions are optional.
wlr_output_init() ¶
void wlr_output_init(struct wlr_output *output, struct wlr_backend *backend, const struct wlr_output_impl *impl, struct wl_event_loop *event_loop, const struct wlr_output_state *state);
Initialize a new output.
wlr_output_send_frame() ¶
void wlr_output_send_frame(struct wlr_output *output);
Send a frame event.
See wlr_output.events.frame.
wlr_output_send_present() ¶
void wlr_output_send_present(struct wlr_output *output, struct wlr_output_event_present *event);
Send a present event.
See wlr_output.events.present.
wlr_output_send_request_state() ¶
void wlr_output_send_request_state(struct wlr_output *output, const struct wlr_output_state *state);
Request the compositor to apply new state.
WLR_OUTPUT_STATE_BACKEND_OPTIONAL ¶
#define WLR_OUTPUT_STATE_BACKEND_OPTIONAL …
wlr_output_update_needs_frame() ¶
void wlr_output_update_needs_frame(struct wlr_output *output);
Notify compositors that they need to submit a new frame in order to apply output changes.