summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Ekstrand <jason@jlekstrand.net>2013-06-20 20:36:48 -0500
committerKristian Høgsberg <krh@bitplanet.net>2013-06-21 19:18:06 -0400
commitee0d986a50aed60a4373dc1f4ca36f4180def1a9 (patch)
tree5e2d4159998adf016a09ca94859d754b32e2b0c1
parent5ac5d55d81dc1dad8f68ddde60b9f8895641567d (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.h15
-rw-r--r--src/wayland-shm.c36
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;
}