Signed-off-by: Jason Ekstrand <ja...@jlekstrand.net> --- src/compositor.c | 23 ++++++++--------------- src/compositor.h | 2 +- 2 files changed, 9 insertions(+), 16 deletions(-)
diff --git a/src/compositor.c b/src/compositor.c index 14080a1..2f178fd 100644 --- a/src/compositor.c +++ b/src/compositor.c @@ -1482,7 +1482,7 @@ surface_set_opaque_region(struct wl_client *client, 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 { @@ -1499,7 +1499,7 @@ surface_set_input_region(struct wl_client *client, 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 { @@ -1674,8 +1674,7 @@ compositor_create_surface(struct wl_client *client, 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); @@ -1691,7 +1690,7 @@ static void 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); @@ -1701,7 +1700,7 @@ static void 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); @@ -1727,17 +1726,11 @@ compositor_create_region(struct wl_client *client, 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 = { diff --git a/src/compositor.h b/src/compositor.h index 36875a6..8ca4672 100644 --- a/src/compositor.h +++ b/src/compositor.h @@ -567,7 +567,7 @@ struct weston_buffer_reference { }; struct weston_region { - struct wl_resource resource; + struct wl_resource *resource; pixman_region32_t region; }; -- 1.8.1.4 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel