diff options
author | Simon Ser <contact@emersion.fr> | 2021-02-09 21:07:10 +0100 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2021-04-17 09:54:39 +0200 |
commit | 6c61de996c14047c5f82ee9f29ddb90b341c160a (patch) | |
tree | 999572b4abdaeeb5dfd76a5da37ad6383e870a42 /include/wlr | |
parent | 0b9288ec0b8885ba0a76e54fc8949c563d39cabd (diff) |
buffer: introduce wlr_buffer_get_shm
References: https://github.com/swaywm/wlroots/issues/2399#issuecomment-769408708
Diffstat (limited to 'include/wlr')
-rw-r--r-- | include/wlr/types/wlr_buffer.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/include/wlr/types/wlr_buffer.h b/include/wlr/types/wlr_buffer.h index 59996fce..ca94e93c 100644 --- a/include/wlr/types/wlr_buffer.h +++ b/include/wlr/types/wlr_buffer.h @@ -15,12 +15,21 @@ struct wlr_buffer; +struct wlr_shm_attributes { + int fd; + uint32_t format; + int width, height, stride; + off_t offset; +}; + struct wlr_buffer_impl { void (*destroy)(struct wlr_buffer *buffer); bool (*get_dmabuf)(struct wlr_buffer *buffer, struct wlr_dmabuf_attributes *attribs); bool (*get_data_ptr)(struct wlr_buffer *buffer, void **data, size_t *stride); + bool (*get_shm)(struct wlr_buffer *buffer, + struct wlr_shm_attributes *attribs); }; /** @@ -78,6 +87,16 @@ void wlr_buffer_unlock(struct wlr_buffer *buffer); */ bool wlr_buffer_get_dmabuf(struct wlr_buffer *buffer, struct wlr_dmabuf_attributes *attribs); +/** + * Read shared memory attributes of the buffer. If this buffer isn't shared + * memory, returns false. + * + * The returned shared memory attributes are valid for the lifetime of the + * wlr_buffer. The caller isn't responsible for cleaning up the shared memory + * attributes. + */ +bool wlr_buffer_get_shm(struct wlr_buffer *buffer, + struct wlr_shm_attributes *attribs); /** * A client buffer. |