summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Michael <cp.michael@samsung.com>2013-06-24 10:51:21 +0100
committerChris Michael <cp.michael@samsung.com>2013-06-24 10:51:21 +0100
commitbf2ab8d9336d3117c4f7dfb75804e571bdc7da48 (patch)
tree7470c4a7cf1122a1a5bdcb8779e4ba7944897b2b
parentfc2c2344a57847b6ddf428cfc4197a51b3f5e5e3 (diff)
downloadenlightenment-bf2ab8d9336d3117c4f7dfb75804e571bdc7da48.tar.gz
Update for recent changes in wayland core protocol
Signed-off-by: Chris Michael <cp.michael@samsung.com>
-rw-r--r--src/bin/e_wayland/e_comp.c8
-rw-r--r--src/bin/e_wayland/e_output.c4
-rw-r--r--src/bin/e_wayland/e_region.c11
-rw-r--r--src/bin/e_wayland/e_region.h4
-rw-r--r--src/bin/e_wayland/e_surface.c27
-rw-r--r--src/bin/e_wayland/e_surface.h2
6 files changed, 24 insertions, 32 deletions
diff --git a/src/bin/e_wayland/e_comp.c b/src/bin/e_wayland/e_comp.c
index 2095a3373b..d85272c09c 100644
--- a/src/bin/e_wayland/e_comp.c
+++ b/src/bin/e_wayland/e_comp.c
@@ -462,15 +462,13 @@ _e_comp_cb_region_create(struct wl_client *client, struct wl_resource *resource,
if (!(comp = resource->data)) return;
/* try to create a new region */
- if (!(reg = e_region_new(id)))
+ if (!(reg = e_region_new(client, id)))
{
wl_resource_post_no_memory(resource);
return;
}
- reg->resource.destroy = _e_comp_cb_region_destroy;
-
- wl_client_add_resource(client, &reg->resource);
+ wl_resource_set_destructor(reg->resource, _e_comp_cb_region_destroy);
}
static void
@@ -479,7 +477,7 @@ _e_comp_cb_region_destroy(struct wl_resource *resource)
E_Region *reg;
/* try to get the region from this resource */
- if (!(reg = container_of(resource, E_Region, resource)))
+ if (!(reg = wl_resource_get_user_data(resource)))
return;
/* free the region */
diff --git a/src/bin/e_wayland/e_output.c b/src/bin/e_wayland/e_output.c
index f392626b3b..a75888b450 100644
--- a/src/bin/e_wayland/e_output.c
+++ b/src/bin/e_wayland/e_output.c
@@ -104,8 +104,8 @@ e_output_repaint(E_Output *output, unsigned int secs)
/* send surface frame callback done */
wl_list_for_each_safe(cb, cbnext, &frames, link)
{
- wl_callback_send_done(&cb->resource, secs);
- wl_resource_destroy(&cb->resource);
+ wl_callback_send_done(cb->resource, secs);
+ wl_resource_destroy(cb->resource);
}
}
diff --git a/src/bin/e_wayland/e_region.c b/src/bin/e_wayland/e_region.c
index c9ee546e0f..b3d2ae21a9 100644
--- a/src/bin/e_wayland/e_region.c
+++ b/src/bin/e_wayland/e_region.c
@@ -14,20 +14,19 @@ static const struct wl_region_interface _e_region_interface =
};
EAPI E_Region *
-e_region_new(unsigned int id)
+e_region_new(struct wl_client *client, unsigned int id)
{
E_Region *reg;
/* try to allocation space for a new region */
if (!(reg = E_NEW_RAW(E_Region, 1))) return NULL;
- reg->resource.object.id = id;
- reg->resource.object.interface = &wl_region_interface;
- reg->resource.object.implementation = (void (**)(void))&_e_region_interface;
- reg->resource.data = reg;
-
pixman_region32_init(&reg->region);
+ reg->resource =
+ wl_client_add_object(client, &wl_region_interface,
+ &_e_region_interface, id, reg);
+
return reg;
}
diff --git a/src/bin/e_wayland/e_region.h b/src/bin/e_wayland/e_region.h
index 6739e1c1bb..5683d2410d 100644
--- a/src/bin/e_wayland/e_region.h
+++ b/src/bin/e_wayland/e_region.h
@@ -8,11 +8,11 @@ typedef struct _E_Region E_Region;
struct _E_Region
{
- struct wl_resource resource;
+ struct wl_resource *resource;
pixman_region32_t region;
};
-EAPI E_Region *e_region_new(unsigned int id);
+EAPI E_Region *e_region_new(struct wl_client *client, unsigned int id);
# endif
#endif
diff --git a/src/bin/e_wayland/e_surface.c b/src/bin/e_wayland/e_surface.c
index 6567bd5f4b..56247b58fa 100644
--- a/src/bin/e_wayland/e_surface.c
+++ b/src/bin/e_wayland/e_surface.c
@@ -5,7 +5,7 @@ static void _e_surface_cb_destroy(struct wl_client *client EINA_UNUSED, struct w
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);
static void _e_surface_cb_damage(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, int x, int y, int w, int h);
static void _e_surface_cb_commit(struct wl_client *client EINA_UNUSED, struct wl_resource *resource);
-static void _e_surface_cb_frame(struct wl_client *client, struct wl_resource *resource, unsigned int id);
+static void _e_surface_cb_frame(struct wl_client *client, struct wl_resource *resource, unsigned int callback);
static void _e_surface_cb_opaque_set(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, struct wl_resource *region_resource);
static void _e_surface_cb_input_set(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, struct wl_resource *region_resource);
static void _e_surface_cb_buffer_destroy(struct wl_listener *listener, void *data EINA_UNUSED);
@@ -132,7 +132,7 @@ e_surface_destroy(E_Surface *es)
/* remove any pending frame callbacks */
wl_list_for_each_safe(cb, cbnext, &es->pending.frames, link)
- wl_resource_destroy(&cb->resource);
+ wl_resource_destroy(cb->resource);
pixman_region32_fini(&es->pending.damage);
pixman_region32_fini(&es->pending.opaque);
@@ -157,7 +157,7 @@ e_surface_destroy(E_Surface *es)
/* remove any active frame callbacks */
wl_list_for_each_safe(cb, cbnext, &es->frames, link)
- wl_resource_destroy(&cb->resource);
+ wl_resource_destroy(cb->resource);
/* EINA_LIST_FOREACH(_e_comp->inputs, l, seat) */
/* { */
@@ -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))
+ if (wl_shm_buffer_get(&es->buffer.reference.buffer->resource))
{
if (_e_comp->renderer->damage_flush)
_e_comp->renderer->damage_flush(es);
@@ -303,7 +303,7 @@ _e_surface_cb_attach(struct wl_client *client EINA_UNUSED, struct wl_resource *r
struct wl_buffer *buffer = NULL;
/* try to cast the resource to our surface */
- if (!(es = resource->data)) return;
+ 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;
@@ -407,13 +407,13 @@ _e_surface_cb_commit(struct wl_client *client EINA_UNUSED, struct wl_resource *r
}
static void
-_e_surface_cb_frame(struct wl_client *client, struct wl_resource *resource, unsigned int id)
+_e_surface_cb_frame(struct wl_client *client, struct wl_resource *resource, unsigned int callback)
{
E_Surface *es;
E_Surface_Frame *cb;
/* try to cast the resource to our surface */
- if (!(es = resource->data)) return;
+ if (!(es = wl_resource_get_user_data(resource))) return;
/* try to create a new frame callback */
if (!(cb = E_NEW_RAW(E_Surface_Frame, 1)))
@@ -422,15 +422,10 @@ _e_surface_cb_frame(struct wl_client *client, struct wl_resource *resource, unsi
return;
}
- /* setup the callback object */
- cb->resource.object.interface = &wl_callback_interface;
- cb->resource.object.id = id;
- cb->resource.destroy = _e_surface_frame_cb_destroy;
- cb->resource.client = client;
- cb->resource.data = cb;
+ cb->resource =
+ wl_client_add_object(client, &wl_callback_interface, NULL, callback, cb);
- /* add this callback to the client */
- wl_client_add_resource(client, &cb->resource);
+ wl_resource_set_destructor(cb->resource, _e_surface_frame_cb_destroy);
/* append the callback to pending frames */
wl_list_insert(es->pending.frames.prev, &cb->link);
@@ -502,7 +497,7 @@ _e_surface_frame_cb_destroy(struct wl_resource *resource)
E_Surface_Frame *cb;
/* try to cast the resource to our callback */
- if (!(cb = resource->data)) return;
+ if (!(cb = wl_resource_get_user_data(resource))) return;
wl_list_remove(&cb->link);
diff --git a/src/bin/e_wayland/e_surface.h b/src/bin/e_wayland/e_surface.h
index 19234976c7..5b2911e8e8 100644
--- a/src/bin/e_wayland/e_surface.h
+++ b/src/bin/e_wayland/e_surface.h
@@ -71,7 +71,7 @@ struct _E_Surface
struct _E_Surface_Frame
{
- struct wl_resource resource;
+ struct wl_resource *resource;
struct wl_list link;
};