wlr_client_buffer: add get_shm implementation

This commit is contained in:
Yixue Wang 2024-11-04 16:53:02 +08:00 committed by Kirill Primak
parent 5dc73937ff
commit d7527778bb

View file

@ -44,9 +44,44 @@ static bool client_buffer_get_dmabuf(struct wlr_buffer *buffer,
return wlr_buffer_get_dmabuf(client_buffer->source, attribs);
}
static bool client_buffer_get_shm(struct wlr_buffer *buffer,
struct wlr_shm_attributes *attribs) {
struct wlr_client_buffer *client_buffer = client_buffer_from_buffer(buffer);
if (client_buffer->source == NULL) {
return false;
}
return wlr_buffer_get_shm(client_buffer->source, attribs);
}
static bool client_buffer_begin_data_ptr_access(struct wlr_buffer *buffer, uint32_t flags,
void **data, uint32_t *format, size_t *stride) {
struct wlr_client_buffer *client_buffer = client_buffer_from_buffer(buffer);
if (client_buffer->source == NULL) {
return false;
}
return wlr_buffer_begin_data_ptr_access(client_buffer->source, flags, data, format, stride);
}
static void client_buffer_end_data_ptr_access(struct wlr_buffer *buffer) {
struct wlr_client_buffer *client_buffer = client_buffer_from_buffer(buffer);
if (client_buffer->source == NULL) {
return;
}
wlr_buffer_end_data_ptr_access(client_buffer->source);
}
static const struct wlr_buffer_impl client_buffer_impl = {
.destroy = client_buffer_destroy,
.get_dmabuf = client_buffer_get_dmabuf,
.get_shm = client_buffer_get_shm,
.begin_data_ptr_access = client_buffer_begin_data_ptr_access,
.end_data_ptr_access = client_buffer_end_data_ptr_access,
};
static void client_buffer_handle_source_destroy(struct wl_listener *listener,