Add a weston_buffer structure to replace wl_buffer
This commit adds a weston_buffer structure to replace wl_buffer. This way
we can hold onto buffers by just their resource. In order to do this, the
every renderer.attach function has to fill in the weston_buffer.width and
weston_buffer.height fields.
Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
diff --git a/src/compositor-drm.c b/src/compositor-drm.c
index c4f9cf6..e704c9f 100644
--- a/src/compositor-drm.c
+++ b/src/compositor-drm.c
@@ -371,7 +371,7 @@
}
static void
-drm_fb_set_buffer(struct drm_fb *fb, struct wl_buffer *buffer)
+drm_fb_set_buffer(struct drm_fb *fb, struct weston_buffer *buffer)
{
assert(fb->buffer_ref.buffer == NULL);
@@ -437,7 +437,7 @@
struct drm_output *output = (struct drm_output *) _output;
struct drm_compositor *c =
(struct drm_compositor *) output->base.compositor;
- struct wl_buffer *buffer = es->buffer_ref.buffer;
+ struct weston_buffer *buffer = es->buffer_ref.buffer;
struct gbm_bo *bo;
uint32_t format;
@@ -791,7 +791,7 @@
if (es->alpha != 1.0f)
return NULL;
- if (wl_buffer_is_shm(es->buffer_ref.buffer))
+ if (wl_shm_buffer_get(es->buffer_ref.buffer->resource))
return NULL;
if (!drm_surface_transform_supported(es))
@@ -915,7 +915,7 @@
if (c->cursors_are_broken)
return NULL;
if (es->buffer_ref.buffer == NULL ||
- !wl_buffer_is_shm(es->buffer_ref.buffer) ||
+ !wl_shm_buffer_get(es->buffer_ref.buffer->resource) ||
es->geometry.width > 64 || es->geometry.height > 64)
return NULL;
@@ -949,8 +949,8 @@
output->current_cursor ^= 1;
bo = output->cursor_bo[output->current_cursor];
memset(buf, 0, sizeof buf);
- stride = wl_shm_buffer_get_stride(es->buffer_ref.buffer);
- s = wl_shm_buffer_get_data(es->buffer_ref.buffer);
+ stride = wl_shm_buffer_get_stride(es->buffer_ref.buffer->shm_buffer);
+ s = wl_shm_buffer_get_data(es->buffer_ref.buffer->shm_buffer);
for (i = 0; i < es->geometry.height; i++)
memcpy(buf + i * 64, s + i * stride,
es->geometry.width * 4);
@@ -1008,7 +1008,7 @@
* non-shm, or small enough to be a cursor
*/
if ((es->buffer_ref.buffer &&
- !wl_buffer_is_shm(es->buffer_ref.buffer)) ||
+ !wl_shm_buffer_get(es->buffer_ref.buffer->resource)) ||
(es->geometry.width <= 64 && es->geometry.height <= 64))
es->keep_buffer = 1;
else