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>
This commit is contained in:
Jason Ekstrand 2013-06-20 20:36:48 -05:00 committed by Kristian Høgsberg
parent 5ac5d55d81
commit ee0d986a50
2 changed files with 25 additions and 26 deletions

View file

@ -285,20 +285,25 @@ struct wl_listener *
wl_resource_get_destroy_listener(struct wl_resource *resource, wl_resource_get_destroy_listener(struct wl_resource *resource,
wl_notify_func_t notify); wl_notify_func_t notify);
struct wl_shm_buffer;
struct wl_shm_buffer *
wl_shm_buffer_get(struct wl_resource *resource);
void * void *
wl_shm_buffer_get_data(struct wl_buffer *buffer); wl_shm_buffer_get_data(struct wl_shm_buffer *buffer);
int32_t int32_t
wl_shm_buffer_get_stride(struct wl_buffer *buffer); wl_shm_buffer_get_stride(struct wl_shm_buffer *buffer);
uint32_t uint32_t
wl_shm_buffer_get_format(struct wl_buffer *buffer); wl_shm_buffer_get_format(struct wl_shm_buffer *buffer);
int32_t int32_t
wl_shm_buffer_get_width(struct wl_buffer *buffer); wl_shm_buffer_get_width(struct wl_shm_buffer *buffer);
int32_t int32_t
wl_shm_buffer_get_height(struct wl_buffer *buffer); wl_shm_buffer_get_height(struct wl_shm_buffer *buffer);
int int
wl_buffer_is_shm(struct wl_buffer *buffer); wl_buffer_is_shm(struct wl_buffer *buffer);

View file

@ -288,6 +288,16 @@ wl_shm_buffer_create(struct wl_client *client,
return &buffer->buffer; 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_EXPORT int
wl_buffer_is_shm(struct wl_buffer *buffer) 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_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; return buffer->stride;
} }
WL_EXPORT void * 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) if (buffer->pool)
return buffer->pool->data + buffer->offset; return buffer->pool->data + buffer->offset;
else else
@ -321,25 +321,19 @@ wl_shm_buffer_get_data(struct wl_buffer *buffer_base)
} }
WL_EXPORT uint32_t 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; return buffer->format;
} }
WL_EXPORT int32_t 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; return buffer->buffer.width;
} }
WL_EXPORT int32_t 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; return buffer->buffer.height;
} }