buffer: add width and height

This commit is contained in:
Simon Ser 2020-02-28 15:25:35 +01:00
parent 6595db6409
commit 1fa9e0203b
2 changed files with 10 additions and 3 deletions

View file

@ -32,6 +32,8 @@ struct wlr_buffer_impl {
struct wlr_buffer { struct wlr_buffer {
const struct wlr_buffer_impl *impl; const struct wlr_buffer_impl *impl;
int width, height;
bool dropped; bool dropped;
size_t n_locks; size_t n_locks;
@ -47,7 +49,7 @@ struct wlr_buffer {
* they should call wlr_buffer_drop. * they should call wlr_buffer_drop.
*/ */
void wlr_buffer_init(struct wlr_buffer *buffer, void wlr_buffer_init(struct wlr_buffer *buffer,
const struct wlr_buffer_impl *impl); const struct wlr_buffer_impl *impl, int width, int height);
/** /**
* Unreference the buffer. This function should be called by producers when * Unreference the buffer. This function should be called by producers when
* they are done with the buffer. * they are done with the buffer.

View file

@ -7,9 +7,11 @@
#include "util/signal.h" #include "util/signal.h"
void wlr_buffer_init(struct wlr_buffer *buffer, void wlr_buffer_init(struct wlr_buffer *buffer,
const struct wlr_buffer_impl *impl) { const struct wlr_buffer_impl *impl, int width, int height) {
assert(impl->destroy); assert(impl->destroy);
buffer->impl = impl; buffer->impl = impl;
buffer->width = width;
buffer->height = height;
wl_signal_init(&buffer->events.destroy); wl_signal_init(&buffer->events.destroy);
wl_signal_init(&buffer->events.release); wl_signal_init(&buffer->events.release);
} }
@ -212,6 +214,9 @@ struct wlr_client_buffer *wlr_client_buffer_import(
return NULL; return NULL;
} }
int width, height;
wlr_resource_get_buffer_size(resource, renderer, &width, &height);
struct wlr_client_buffer *buffer = struct wlr_client_buffer *buffer =
calloc(1, sizeof(struct wlr_client_buffer)); calloc(1, sizeof(struct wlr_client_buffer));
if (buffer == NULL) { if (buffer == NULL) {
@ -219,7 +224,7 @@ struct wlr_client_buffer *wlr_client_buffer_import(
wl_resource_post_no_memory(resource); wl_resource_post_no_memory(resource);
return NULL; return NULL;
} }
wlr_buffer_init(&buffer->base, &client_buffer_impl); wlr_buffer_init(&buffer->base, &client_buffer_impl, width, height);
buffer->resource = resource; buffer->resource = resource;
buffer->texture = texture; buffer->texture = texture;
buffer->resource_released = resource_released; buffer->resource_released = resource_released;