diff options
author | Jason Ekstrand <jason@jlekstrand.net> | 2013-06-20 20:36:48 -0500 |
---|---|---|
committer | Kristian Høgsberg <krh@bitplanet.net> | 2013-06-21 19:18:06 -0400 |
commit | ee0d986a50aed60a4373dc1f4ca36f4180def1a9 (patch) | |
tree | 5e2d4159998adf016a09ca94859d754b32e2b0c1 | |
parent | 5ac5d55d81dc1dad8f68ddde60b9f8895641567d (diff) |
Change SHM wl_buffer functions to use the wl_shm_buffer structure
This commit does not break ABI. It merely changes the types of some things
and adds a wl_shm_buffer_get function.
Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
-rw-r--r-- | src/wayland-server.h | 15 | ||||
-rw-r--r-- | src/wayland-shm.c | 36 |
2 files changed, 25 insertions, 26 deletions
diff --git a/src/wayland-server.h b/src/wayland-server.h index 72a4833..b8f1349 100644 --- a/src/wayland-server.h +++ b/src/wayland-server.h @@ -285,20 +285,25 @@ struct wl_listener * wl_resource_get_destroy_listener(struct wl_resource *resource, wl_notify_func_t notify); +struct wl_shm_buffer; + +struct wl_shm_buffer * +wl_shm_buffer_get(struct wl_resource *resource); + void * -wl_shm_buffer_get_data(struct wl_buffer *buffer); +wl_shm_buffer_get_data(struct wl_shm_buffer *buffer); int32_t -wl_shm_buffer_get_stride(struct wl_buffer *buffer); +wl_shm_buffer_get_stride(struct wl_shm_buffer *buffer); uint32_t -wl_shm_buffer_get_format(struct wl_buffer *buffer); +wl_shm_buffer_get_format(struct wl_shm_buffer *buffer); int32_t -wl_shm_buffer_get_width(struct wl_buffer *buffer); +wl_shm_buffer_get_width(struct wl_shm_buffer *buffer); int32_t -wl_shm_buffer_get_height(struct wl_buffer *buffer); +wl_shm_buffer_get_height(struct wl_shm_buffer *buffer); int wl_buffer_is_shm(struct wl_buffer *buffer); diff --git a/src/wayland-shm.c b/src/wayland-shm.c index dc169ae..e2705b8 100644 --- a/src/wayland-shm.c +++ b/src/wayland-shm.c @@ -288,6 +288,16 @@ wl_shm_buffer_create(struct wl_client *client, return &buffer->buffer; } +WL_EXPORT struct wl_shm_buffer * +wl_shm_buffer_get(struct wl_resource *resource) +{ + if (wl_resource_instance_of(resource, &wl_buffer_interface, + &shm_buffer_interface)) + return wl_resource_get_user_data(resource); + else + return NULL; +} + WL_EXPORT int wl_buffer_is_shm(struct wl_buffer *buffer) { @@ -296,24 +306,14 @@ wl_buffer_is_shm(struct wl_buffer *buffer) } WL_EXPORT int32_t -wl_shm_buffer_get_stride(struct wl_buffer *buffer_base) +wl_shm_buffer_get_stride(struct wl_shm_buffer *buffer) { - struct wl_shm_buffer *buffer = (struct wl_shm_buffer *) buffer_base; - - if (!wl_buffer_is_shm(buffer_base)) - return 0; - return buffer->stride; } WL_EXPORT void * -wl_shm_buffer_get_data(struct wl_buffer *buffer_base) +wl_shm_buffer_get_data(struct wl_shm_buffer *buffer) { - struct wl_shm_buffer *buffer = (struct wl_shm_buffer *) buffer_base; - - if (!wl_buffer_is_shm(buffer_base)) - return NULL; - if (buffer->pool) return buffer->pool->data + buffer->offset; else @@ -321,25 +321,19 @@ wl_shm_buffer_get_data(struct wl_buffer *buffer_base) } WL_EXPORT uint32_t -wl_shm_buffer_get_format(struct wl_buffer *buffer_base) +wl_shm_buffer_get_format(struct wl_shm_buffer *buffer) { - struct wl_shm_buffer *buffer = (struct wl_shm_buffer *) buffer_base; - return buffer->format; } WL_EXPORT int32_t -wl_shm_buffer_get_width(struct wl_buffer *buffer_base) +wl_shm_buffer_get_width(struct wl_shm_buffer *buffer) { - struct wl_shm_buffer *buffer = (struct wl_shm_buffer *) buffer_base; - return buffer->buffer.width; } WL_EXPORT int32_t -wl_shm_buffer_get_height(struct wl_buffer *buffer_base) +wl_shm_buffer_get_height(struct wl_shm_buffer *buffer) { - struct wl_shm_buffer *buffer = (struct wl_shm_buffer *) buffer_base; - return buffer->buffer.height; } |