region: Change resource to a wl_resource pointer
Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
diff --git a/src/compositor.c b/src/compositor.c
index fac0369..91c2f94 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -1484,7 +1484,7 @@
struct weston_region *region;
if (region_resource) {
- region = region_resource->data;
+ region = wl_resource_get_user_data(region_resource);
pixman_region32_copy(&surface->pending.opaque,
®ion->region);
} else {
@@ -1501,7 +1501,7 @@
struct weston_region *region;
if (region_resource) {
- region = region_resource->data;
+ region = wl_resource_get_user_data(region_resource);
pixman_region32_copy(&surface->pending.input,
®ion->region);
} else {
@@ -1676,8 +1676,7 @@
static void
destroy_region(struct wl_resource *resource)
{
- struct weston_region *region =
- container_of(resource, struct weston_region, resource);
+ struct weston_region *region = wl_resource_get_user_data(resource);
pixman_region32_fini(®ion->region);
free(region);
@@ -1693,7 +1692,7 @@
region_add(struct wl_client *client, struct wl_resource *resource,
int32_t x, int32_t y, int32_t width, int32_t height)
{
- struct weston_region *region = resource->data;
+ struct weston_region *region = wl_resource_get_user_data(resource);
pixman_region32_union_rect(®ion->region, ®ion->region,
x, y, width, height);
@@ -1703,7 +1702,7 @@
region_subtract(struct wl_client *client, struct wl_resource *resource,
int32_t x, int32_t y, int32_t width, int32_t height)
{
- struct weston_region *region = resource->data;
+ struct weston_region *region = wl_resource_get_user_data(resource);
pixman_region32_t rect;
pixman_region32_init_rect(&rect, x, y, width, height);
@@ -1729,17 +1728,11 @@
return;
}
- region->resource.destroy = destroy_region;
-
- region->resource.object.id = id;
- region->resource.object.interface = &wl_region_interface;
- region->resource.object.implementation =
- (void (**)(void)) ®ion_interface;
- region->resource.data = region;
-
pixman_region32_init(®ion->region);
- wl_client_add_resource(client, ®ion->resource);
+ region->resource = wl_client_add_object(client, &wl_region_interface,
+ ®ion_interface, id, region);
+ wl_resource_set_destructor(region->resource, destroy_region);
}
static const struct wl_compositor_interface compositor_interface = {