Update e_wayland to use our own E_Buffer structure

Signed-off-by: Chris Michael <cp.michael@samsung.com>
This commit is contained in:
Chris Michael 2013-06-24 11:40:40 +01:00
parent ba0b2a339b
commit 11054d55e5
4 changed files with 19 additions and 18 deletions

View File

@ -43,7 +43,7 @@ static Eina_Bool _e_renderer_cb_pixels_read(E_Output *output, int format, void *
static void _e_renderer_cb_output_buffer_set(E_Output *output, pixman_image_t *buffer);
static void _e_renderer_cb_output_repaint(E_Output *output, pixman_region32_t *damage);
static void _e_renderer_cb_damage_flush(E_Surface *surface);
static void _e_renderer_cb_attach(E_Surface *surface, struct wl_buffer *buffer);
static void _e_renderer_cb_attach(E_Surface *surface, E_Buffer *buffer);
static Eina_Bool _e_renderer_cb_output_create(E_Output *output, unsigned int window);
static void _e_renderer_cb_output_destroy(E_Output *output);
static Eina_Bool _e_renderer_cb_surface_create(E_Surface *surface);
@ -260,7 +260,7 @@ _e_renderer_cb_damage_flush(E_Surface *surface)
}
static void
_e_renderer_cb_attach(E_Surface *surface, struct wl_buffer *buffer)
_e_renderer_cb_attach(E_Surface *surface, E_Buffer *buffer)
{
E_Renderer_Surface_State *state;
pixman_format_code_t format = 0;
@ -278,7 +278,7 @@ _e_renderer_cb_attach(E_Surface *surface, struct wl_buffer *buffer)
if (!buffer) return;
if (!(shm_buffer = wl_shm_buffer_get(&buffer->resource)))
if (!(shm_buffer = wl_shm_buffer_get(buffer->wl.resource)))
{
e_buffer_reference(&state->buffer_reference, NULL);
return;
@ -294,12 +294,14 @@ _e_renderer_cb_attach(E_Surface *surface, struct wl_buffer *buffer)
break;
}
w = wl_shm_buffer_get_width(shm_buffer);
h = wl_shm_buffer_get_height(shm_buffer);
buffer->shm_buffer = shm_buffer;
buffer->w = wl_shm_buffer_get_width(shm_buffer);
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);
state->image =
pixman_image_create_bits(format, buffer->w, buffer->h, data, stride);
}
static Eina_Bool

View File

@ -82,7 +82,7 @@ struct _E_Renderer
void (*output_buffer_set)(E_Output *output, pixman_image_t *buffer);
void (*output_repaint)(E_Output *output, pixman_region32_t *damage);
void (*damage_flush)(E_Surface *surface);
void (*attach)(E_Surface *surface, struct wl_buffer *buffer);
void (*attach)(E_Surface *surface, E_Buffer *buffer);
Eina_Bool (*output_create)(E_Output *output, unsigned int window);
void (*output_destroy)(E_Output *output);
Eina_Bool (*surface_create)(E_Surface *surface);

View File

@ -1,4 +1,4 @@
#include "e.h"
#include "e.h"
/* local function prototypes */
static void _e_surface_cb_destroy(struct wl_client *client EINA_UNUSED, struct wl_resource *resource);
@ -65,7 +65,7 @@ e_surface_new(struct wl_client *client, unsigned int id)
}
EAPI void
e_surface_attach(E_Surface *es, struct wl_buffer *buffer)
e_surface_attach(E_Surface *es, E_Buffer *buffer)
{
/* check for valid surface */
if (!es) return;
@ -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_shm_buffer_get(&es->buffer.reference.buffer->resource))
if (wl_shm_buffer_get(es->buffer.reference.buffer->wl.resource))
{
if (_e_comp->renderer->damage_flush)
_e_comp->renderer->damage_flush(es);
@ -300,13 +300,13 @@ static void
_e_surface_cb_attach(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, struct wl_resource *buffer_resource, int x, int y)
{
E_Surface *es;
struct wl_buffer *buffer = NULL;
E_Buffer *buffer = NULL;
/* try to cast the resource to our surface */
if (!(es = wl_resource_get_user_data(resource))) return;
/* if we have a buffer resource, get a wl_buffer from it */
if (buffer_resource) buffer = buffer_resource->data;
if (buffer_resource) buffer = e_buffer_resource_get(buffer_resource);
/* if we have a previous pending buffer, remove it
*
@ -323,8 +323,7 @@ _e_surface_cb_attach(struct wl_client *client EINA_UNUSED, struct wl_resource *r
/* if we have a valid pending buffer, setup a destroy listener */
if (buffer)
wl_signal_add(&buffer->resource.destroy_signal,
&es->pending.buffer_destroy);
wl_signal_add(&buffer->signals.destroy, &es->pending.buffer_destroy);
}
static void
@ -357,8 +356,8 @@ _e_surface_cb_commit(struct wl_client *client EINA_UNUSED, struct wl_resource *r
/* if we have a referenced buffer, get it's size */
if (es->buffer.reference.buffer)
{
bw = es->buffer.reference.buffer->width;
bh = es->buffer.reference.buffer->height;
bw = es->buffer.reference.buffer->w;
bh = es->buffer.reference.buffer->h;
}
/* if we attached a new buffer, call the surface configure function */

View File

@ -29,7 +29,7 @@ struct _E_Surface
struct
{
struct wl_buffer *buffer;
E_Buffer *buffer;
struct wl_listener buffer_destroy;
struct wl_list frames;
@ -76,7 +76,7 @@ struct _E_Surface_Frame
};
EAPI E_Surface *e_surface_new(struct wl_client *client, unsigned int id);
EAPI void e_surface_attach(E_Surface *es, struct wl_buffer *buffer);
EAPI void e_surface_attach(E_Surface *es, E_Buffer *buffer);
EAPI void e_surface_unmap(E_Surface *es);
EAPI void e_surface_damage(E_Surface *es);
EAPI void e_surface_damage_below(E_Surface *es);