From fc2c2344a57847b6ddf428cfc4197a51b3f5e5e3 Mon Sep 17 00:00:00 2001 From: Chris Michael Date: Mon, 24 Jun 2013 10:29:56 +0100 Subject: [PATCH] Update e_wayland surface and renderer for changes in wayland protocol. Signed-off-by: Chris Michael --- src/bin/e_wayland/e_renderer.c | 17 ++++++++++++----- src/bin/e_wayland/e_surface.c | 2 +- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/bin/e_wayland/e_renderer.c b/src/bin/e_wayland/e_renderer.c index 7ea1523c9..13904b36a 100644 --- a/src/bin/e_wayland/e_renderer.c +++ b/src/bin/e_wayland/e_renderer.c @@ -267,6 +267,7 @@ _e_renderer_cb_attach(E_Surface *surface, struct wl_buffer *buffer) Evas_Coord w = 0, h = 0; void *data; int stride = 0; + struct wl_shm_buffer *shm_buffer; state = surface->state; @@ -277,7 +278,13 @@ _e_renderer_cb_attach(E_Surface *surface, struct wl_buffer *buffer) if (!buffer) return; - switch (wl_shm_buffer_get_format(buffer)) + if (!(shm_buffer = wl_shm_buffer_get(&buffer->resource))) + { + e_buffer_reference(&state->buffer_reference, NULL); + return; + } + + switch (wl_shm_buffer_get_format(shm_buffer)) { case WL_SHM_FORMAT_XRGB8888: format = PIXMAN_x8r8g8b8; @@ -287,10 +294,10 @@ _e_renderer_cb_attach(E_Surface *surface, struct wl_buffer *buffer) break; } - w = wl_shm_buffer_get_width(buffer); - h = wl_shm_buffer_get_height(buffer); - data = wl_shm_buffer_get_data(buffer); - stride = wl_shm_buffer_get_stride(buffer); + w = wl_shm_buffer_get_width(shm_buffer); + h = wl_shm_buffer_get_height(shm_buffer); + data = wl_shm_buffer_get_data(shm_buffer); + stride = wl_shm_buffer_get_stride(shm_buffer); state->image = pixman_image_create_bits(format, w, h, data, stride); } diff --git a/src/bin/e_wayland/e_surface.c b/src/bin/e_wayland/e_surface.c index 785b3b17e..6567bd5f4 100644 --- a/src/bin/e_wayland/e_surface.c +++ b/src/bin/e_wayland/e_surface.c @@ -191,7 +191,7 @@ e_surface_damage_calculate(E_Surface *es, pixman_region32_t *opaque) if (es->buffer.reference.buffer) { /* if this is an shm buffer, flush any pending damage */ - if (wl_buffer_is_shm(es->buffer.reference.buffer)) + if (wl_shm_buffer_get(es->buffer.reference.buffer)) { if (_e_comp->renderer->damage_flush) _e_comp->renderer->damage_flush(es);