swc

Unnamed repository; edit this file 'description' to name the repository.
git clone git://git.nihaljere.xyz/swc
Log | Files | Refs | README | LICENSE

commit 268b3384b7c5cb846f539e294ac9ee2469188156
parent 4a9aa152d370c91520174c4a8a97c3d9d0ba4800
Author: Michael Forney <mforney@mforney.org>
Date:   Tue, 21 Jan 2014 18:05:51 -0800

wayland_buffer: Reorganize swc_wayland_buffer_get

Diffstat:
Mlibswc/wayland_buffer.c | 85++++++++++++++++++++++++++++++++++++++++---------------------------------------
1 file changed, 43 insertions(+), 42 deletions(-)

diff --git a/libswc/wayland_buffer.c b/libswc/wayland_buffer.c @@ -71,57 +71,58 @@ static inline uint32_t format_shm_to_wld(uint32_t format) struct swc_buffer * swc_wayland_buffer_get(struct wl_resource * resource) { - struct wayland_buffer * buffer; - if (wl_resource_instance_of(resource, &wl_buffer_interface, &buffer_implementation)) { - buffer = wl_resource_get_user_data(resource); + return wl_resource_get_user_data(resource); + } + + struct wl_listener * listener; + struct wayland_buffer * buffer; + + listener = wl_resource_get_destroy_listener(resource, + &handle_buffer_destroy); + + if (listener) + { + buffer = CONTAINER_OF(listener, typeof(*buffer), destroy_listener); + + return &buffer->base; } - else + + struct wl_shm_buffer * shm_buffer; + struct wld_buffer * wld = NULL; + + if ((shm_buffer = wl_shm_buffer_get(resource))) { - struct wl_listener * listener; - - listener = wl_resource_get_destroy_listener(resource, - &handle_buffer_destroy); - - if (listener) - buffer = CONTAINER_OF(listener, typeof(*buffer), destroy_listener); - else - { - struct wl_shm_buffer * shm_buffer; - struct wld_buffer * wld = NULL; - - if ((shm_buffer = wl_shm_buffer_get(resource))) - { - union wld_object object = { - .ptr = wl_shm_buffer_get_data(shm_buffer) - }; - - wld = wld_import_buffer - (swc.shm->context, WLD_OBJECT_DATA, object, - wl_shm_buffer_get_width(shm_buffer), - wl_shm_buffer_get_height(shm_buffer), - format_shm_to_wld(wl_shm_buffer_get_format(shm_buffer)), - wl_shm_buffer_get_stride(shm_buffer)); - } - - if (!wld) - goto error0; - - if (!(buffer = malloc(sizeof *buffer))) - goto error0; - - swc_buffer_initialize(&buffer->base, wld); - buffer->resource = resource; - buffer->destroy_listener.notify = &handle_buffer_destroy; - wl_resource_add_destroy_listener(resource, - &buffer->destroy_listener); - } + union wld_object object = { + .ptr = wl_shm_buffer_get_data(shm_buffer) + }; + + wld = wld_import_buffer + (swc.shm->context, WLD_OBJECT_DATA, object, + wl_shm_buffer_get_width(shm_buffer), + wl_shm_buffer_get_height(shm_buffer), + format_shm_to_wld(wl_shm_buffer_get_format(shm_buffer)), + wl_shm_buffer_get_stride(shm_buffer)); } + if (!wld) + goto error0; + + if (!(buffer = malloc(sizeof *buffer))) + goto error1; + + swc_buffer_initialize(&buffer->base, wld); + buffer->resource = resource; + buffer->destroy_listener.notify = &handle_buffer_destroy; + wl_resource_add_destroy_listener(resource, + &buffer->destroy_listener); + return &buffer->base; + error1: + wld_destroy_buffer(wld); error0: return NULL; }