commit 268b338

Michael Forney  ·  2014-01-22 02:05:51 +0000 UTC
parent 4a9aa15
wayland_buffer: Reorganize swc_wayland_buffer_get
1 files changed,  +43, -42
+43, -42
  1@@ -71,57 +71,58 @@ static inline uint32_t format_shm_to_wld(uint32_t format)
  2 
  3 struct swc_buffer * swc_wayland_buffer_get(struct wl_resource * resource)
  4 {
  5-    struct wayland_buffer * buffer;
  6-
  7     if (wl_resource_instance_of(resource, &wl_buffer_interface,
  8                                 &buffer_implementation))
  9     {
 10-        buffer = wl_resource_get_user_data(resource);
 11+        return wl_resource_get_user_data(resource);
 12+    }
 13+
 14+    struct wl_listener * listener;
 15+    struct wayland_buffer * buffer;
 16+
 17+    listener = wl_resource_get_destroy_listener(resource,
 18+                                                &handle_buffer_destroy);
 19+
 20+    if (listener)
 21+    {
 22+        buffer = CONTAINER_OF(listener, typeof(*buffer), destroy_listener);
 23+
 24+        return &buffer->base;
 25     }
 26-    else
 27+
 28+    struct wl_shm_buffer * shm_buffer;
 29+    struct wld_buffer * wld = NULL;
 30+
 31+    if ((shm_buffer = wl_shm_buffer_get(resource)))
 32     {
 33-        struct wl_listener * listener;
 34-
 35-        listener = wl_resource_get_destroy_listener(resource,
 36-                                                    &handle_buffer_destroy);
 37-
 38-        if (listener)
 39-            buffer = CONTAINER_OF(listener, typeof(*buffer), destroy_listener);
 40-        else
 41-        {
 42-            struct wl_shm_buffer * shm_buffer;
 43-            struct wld_buffer * wld = NULL;
 44-
 45-            if ((shm_buffer = wl_shm_buffer_get(resource)))
 46-            {
 47-                union wld_object object = {
 48-                    .ptr = wl_shm_buffer_get_data(shm_buffer)
 49-                };
 50-
 51-                wld = wld_import_buffer
 52-                    (swc.shm->context, WLD_OBJECT_DATA, object,
 53-                     wl_shm_buffer_get_width(shm_buffer),
 54-                     wl_shm_buffer_get_height(shm_buffer),
 55-                     format_shm_to_wld(wl_shm_buffer_get_format(shm_buffer)),
 56-                     wl_shm_buffer_get_stride(shm_buffer));
 57-            }
 58-
 59-            if (!wld)
 60-                goto error0;
 61-
 62-            if (!(buffer = malloc(sizeof *buffer)))
 63-                goto error0;
 64-
 65-            swc_buffer_initialize(&buffer->base, wld);
 66-            buffer->resource = resource;
 67-            buffer->destroy_listener.notify = &handle_buffer_destroy;
 68-            wl_resource_add_destroy_listener(resource,
 69-                                             &buffer->destroy_listener);
 70-        }
 71+        union wld_object object = {
 72+            .ptr = wl_shm_buffer_get_data(shm_buffer)
 73+        };
 74+
 75+        wld = wld_import_buffer
 76+            (swc.shm->context, WLD_OBJECT_DATA, object,
 77+             wl_shm_buffer_get_width(shm_buffer),
 78+             wl_shm_buffer_get_height(shm_buffer),
 79+             format_shm_to_wld(wl_shm_buffer_get_format(shm_buffer)),
 80+             wl_shm_buffer_get_stride(shm_buffer));
 81     }
 82 
 83+    if (!wld)
 84+        goto error0;
 85+
 86+    if (!(buffer = malloc(sizeof *buffer)))
 87+        goto error1;
 88+
 89+    swc_buffer_initialize(&buffer->base, wld);
 90+    buffer->resource = resource;
 91+    buffer->destroy_listener.notify = &handle_buffer_destroy;
 92+    wl_resource_add_destroy_listener(resource,
 93+                                     &buffer->destroy_listener);
 94+
 95     return &buffer->base;
 96 
 97+  error1:
 98+    wld_destroy_buffer(wld);
 99   error0:
100     return NULL;
101 }