wayland_shm: Fix dmabuf failed allocation handling
authorDerek Foreman <derekf@osg.samsung.com>
Thu, 5 May 2016 16:48:42 +0000 (11:48 -0500)
committerDerek Foreman <derekf@osg.samsung.com>
Wed, 18 May 2016 16:52:23 +0000 (11:52 -0500)
We frequently attempt to generate multiple buffers before any come back
as failed - the orphaned buffers need to be handled more carefully.

src/modules/evas/engines/wayland_shm/evas_dmabuf.c

index df16114..ee31a23 100644 (file)
@@ -197,12 +197,14 @@ static void
 _create_failed(void *data, struct zwp_linux_buffer_params_v1 *params)
 {
    Dmabuf_Buffer *b = data;
+   Eina_Bool orphaned;
 
    zwp_linux_buffer_params_v1_destroy(params);
 
    dmabuf_totally_hosed = EINA_TRUE;
-   _evas_dmabuf_buffer_destroy(b);
+   orphaned = b->orphaned;
    _allocation_complete(b);
+   if (orphaned) _evas_dmabuf_buffer_destroy(b);
 }
 
 static const struct zwp_linux_buffer_params_v1_listener params_listener =