Update e_wayland to use our own E_Buffer structure
Signed-off-by: Chris Michael <cp.michael@samsung.com>
This commit is contained in:
parent
ba0b2a339b
commit
11054d55e5
|
@ -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_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_output_repaint(E_Output *output, pixman_region32_t *damage);
|
||||||
static void _e_renderer_cb_damage_flush(E_Surface *surface);
|
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 Eina_Bool _e_renderer_cb_output_create(E_Output *output, unsigned int window);
|
||||||
static void _e_renderer_cb_output_destroy(E_Output *output);
|
static void _e_renderer_cb_output_destroy(E_Output *output);
|
||||||
static Eina_Bool _e_renderer_cb_surface_create(E_Surface *surface);
|
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
|
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;
|
E_Renderer_Surface_State *state;
|
||||||
pixman_format_code_t format = 0;
|
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 (!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);
|
e_buffer_reference(&state->buffer_reference, NULL);
|
||||||
return;
|
return;
|
||||||
|
@ -294,12 +294,14 @@ _e_renderer_cb_attach(E_Surface *surface, struct wl_buffer *buffer)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
w = wl_shm_buffer_get_width(shm_buffer);
|
buffer->shm_buffer = shm_buffer;
|
||||||
h = wl_shm_buffer_get_height(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);
|
data = wl_shm_buffer_get_data(shm_buffer);
|
||||||
stride = wl_shm_buffer_get_stride(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
|
static Eina_Bool
|
||||||
|
|
|
@ -82,7 +82,7 @@ struct _E_Renderer
|
||||||
void (*output_buffer_set)(E_Output *output, pixman_image_t *buffer);
|
void (*output_buffer_set)(E_Output *output, pixman_image_t *buffer);
|
||||||
void (*output_repaint)(E_Output *output, pixman_region32_t *damage);
|
void (*output_repaint)(E_Output *output, pixman_region32_t *damage);
|
||||||
void (*damage_flush)(E_Surface *surface);
|
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);
|
Eina_Bool (*output_create)(E_Output *output, unsigned int window);
|
||||||
void (*output_destroy)(E_Output *output);
|
void (*output_destroy)(E_Output *output);
|
||||||
Eina_Bool (*surface_create)(E_Surface *surface);
|
Eina_Bool (*surface_create)(E_Surface *surface);
|
||||||
|
|
|
@ -65,7 +65,7 @@ e_surface_new(struct wl_client *client, unsigned int id)
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void
|
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 */
|
/* check for valid surface */
|
||||||
if (!es) return;
|
if (!es) return;
|
||||||
|
@ -191,7 +191,7 @@ e_surface_damage_calculate(E_Surface *es, pixman_region32_t *opaque)
|
||||||
if (es->buffer.reference.buffer)
|
if (es->buffer.reference.buffer)
|
||||||
{
|
{
|
||||||
/* if this is an shm buffer, flush any pending damage */
|
/* 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)
|
if (_e_comp->renderer->damage_flush)
|
||||||
_e_comp->renderer->damage_flush(es);
|
_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_cb_attach(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, struct wl_resource *buffer_resource, int x, int y)
|
||||||
{
|
{
|
||||||
E_Surface *es;
|
E_Surface *es;
|
||||||
struct wl_buffer *buffer = NULL;
|
E_Buffer *buffer = NULL;
|
||||||
|
|
||||||
/* try to cast the resource to our surface */
|
/* try to cast the resource to our surface */
|
||||||
if (!(es = wl_resource_get_user_data(resource))) return;
|
if (!(es = wl_resource_get_user_data(resource))) return;
|
||||||
|
|
||||||
/* if we have a buffer resource, get a wl_buffer from it */
|
/* 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
|
/* 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 we have a valid pending buffer, setup a destroy listener */
|
||||||
if (buffer)
|
if (buffer)
|
||||||
wl_signal_add(&buffer->resource.destroy_signal,
|
wl_signal_add(&buffer->signals.destroy, &es->pending.buffer_destroy);
|
||||||
&es->pending.buffer_destroy);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
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 we have a referenced buffer, get it's size */
|
||||||
if (es->buffer.reference.buffer)
|
if (es->buffer.reference.buffer)
|
||||||
{
|
{
|
||||||
bw = es->buffer.reference.buffer->width;
|
bw = es->buffer.reference.buffer->w;
|
||||||
bh = es->buffer.reference.buffer->height;
|
bh = es->buffer.reference.buffer->h;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if we attached a new buffer, call the surface configure function */
|
/* if we attached a new buffer, call the surface configure function */
|
||||||
|
|
|
@ -29,7 +29,7 @@ struct _E_Surface
|
||||||
|
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
struct wl_buffer *buffer;
|
E_Buffer *buffer;
|
||||||
struct wl_listener buffer_destroy;
|
struct wl_listener buffer_destroy;
|
||||||
struct wl_list frames;
|
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 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_unmap(E_Surface *es);
|
||||||
EAPI void e_surface_damage(E_Surface *es);
|
EAPI void e_surface_damage(E_Surface *es);
|
||||||
EAPI void e_surface_damage_below(E_Surface *es);
|
EAPI void e_surface_damage_below(E_Surface *es);
|
||||||
|
|
Loading…
Reference in New Issue