diff options
author | Jason Ekstrand <jason@jlekstrand.net> | 2013-06-20 20:36:49 -0500 |
---|---|---|
committer | Kristian Høgsberg <krh@bitplanet.net> | 2013-06-21 19:18:08 -0400 |
commit | 3af748b872f8f1ac4ce536b9826cc7ecbe74df6a (patch) | |
tree | c2ba83f6cc818682835bdb258e9ee82757996783 | |
parent | ee0d986a50aed60a4373dc1f4ca36f4180def1a9 (diff) |
Change wl_shm_buffer to use a resource pointer
This commit also has the effect of making wl_shm_buffer no longer a
wl_buffer derivative.
Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
-rw-r--r-- | src/wayland-server.h | 5 | ||||
-rw-r--r-- | src/wayland-shm.c | 51 |
2 files changed, 19 insertions, 37 deletions
diff --git a/src/wayland-server.h b/src/wayland-server.h index b8f1349..515efe5 100644 --- a/src/wayland-server.h +++ b/src/wayland-server.h @@ -306,12 +306,9 @@ int32_t wl_shm_buffer_get_height(struct wl_shm_buffer *buffer); int -wl_buffer_is_shm(struct wl_buffer *buffer); - -int wl_display_init_shm(struct wl_display *display); -struct wl_buffer * +struct wl_shm_buffer * wl_shm_buffer_create(struct wl_client *client, uint32_t id, int32_t width, int32_t height, int32_t stride, uint32_t format); diff --git a/src/wayland-shm.c b/src/wayland-shm.c index e2705b8..c2e1df0 100644 --- a/src/wayland-shm.c +++ b/src/wayland-shm.c @@ -44,7 +44,8 @@ struct wl_shm_pool { }; struct wl_shm_buffer { - struct wl_buffer buffer; + struct wl_resource *resource; + int32_t width, height; int32_t stride; uint32_t format; int offset; @@ -118,23 +119,18 @@ shm_pool_create_buffer(struct wl_client *client, struct wl_resource *resource, return; } - buffer->buffer.width = width; - buffer->buffer.height = height; - buffer->buffer.busy_count = 0; + buffer->width = width; + buffer->height = height; buffer->format = format; buffer->stride = stride; buffer->offset = offset; buffer->pool = pool; pool->refcount++; - buffer->buffer.resource.object.id = id; - buffer->buffer.resource.object.interface = &wl_buffer_interface; - buffer->buffer.resource.object.implementation = &shm_buffer_interface; - buffer->buffer.resource.data = buffer; - buffer->buffer.resource.client = client; - buffer->buffer.resource.destroy = destroy_buffer; - - wl_client_add_resource(client, &buffer->buffer.resource); + buffer->resource = wl_client_add_object(client, &wl_buffer_interface, + &shm_buffer_interface, + id, buffer); + wl_resource_set_destructor(buffer->resource, destroy_buffer); } static void @@ -249,7 +245,7 @@ wl_display_init_shm(struct wl_display *display) return 0; } -WL_EXPORT struct wl_buffer * +WL_EXPORT struct wl_shm_buffer * wl_shm_buffer_create(struct wl_client *client, uint32_t id, int32_t width, int32_t height, int32_t stride, uint32_t format) @@ -268,24 +264,20 @@ wl_shm_buffer_create(struct wl_client *client, if (buffer == NULL) return NULL; - buffer->buffer.width = width; - buffer->buffer.height = height; - buffer->buffer.busy_count = 0; + buffer->width = width; + buffer->height = height; buffer->format = format; buffer->stride = stride; buffer->offset = 0; buffer->pool = NULL; - buffer->buffer.resource.object.id = id; - buffer->buffer.resource.object.interface = &wl_buffer_interface; - buffer->buffer.resource.object.implementation = &shm_buffer_interface; - buffer->buffer.resource.data = buffer; - buffer->buffer.resource.client = client; - buffer->buffer.resource.destroy = destroy_buffer; - wl_client_add_resource(client, &buffer->buffer.resource); + buffer->resource = wl_client_add_object(client, &wl_buffer_interface, + &shm_buffer_interface, + id, buffer); + wl_resource_set_destructor(buffer->resource, destroy_buffer); - return &buffer->buffer; + return buffer; } WL_EXPORT struct wl_shm_buffer * @@ -298,13 +290,6 @@ wl_shm_buffer_get(struct wl_resource *resource) return NULL; } -WL_EXPORT int -wl_buffer_is_shm(struct wl_buffer *buffer) -{ - return buffer->resource.object.implementation == - (void (**)(void)) &shm_buffer_interface; -} - WL_EXPORT int32_t wl_shm_buffer_get_stride(struct wl_shm_buffer *buffer) { @@ -329,11 +314,11 @@ wl_shm_buffer_get_format(struct wl_shm_buffer *buffer) WL_EXPORT int32_t wl_shm_buffer_get_width(struct wl_shm_buffer *buffer) { - return buffer->buffer.width; + return buffer->width; } WL_EXPORT int32_t wl_shm_buffer_get_height(struct wl_shm_buffer *buffer) { - return buffer->buffer.height; + return buffer->height; } |