ecore_wl2: Fix dmabuf test failure
authorDerek Foreman <derekf@osg.samsung.com>
Thu, 16 Nov 2017 19:16:19 +0000 (13:16 -0600)
committerDerek Foreman <derekf@osg.samsung.com>
Thu, 16 Nov 2017 19:18:48 +0000 (13:18 -0600)
We need to destroy the buffer manager on fail, since it will exist but
only be able to create buffers we can't actually use.

src/lib/ecore_wl2/ecore_wl2_buffer.c

index 9363c1b..08a6df0 100644 (file)
@@ -456,7 +456,6 @@ _buffer_manager_deref(void)
    if (drm_fd >=0) close(drm_fd);
 }
 
-/* Currently no callers, but that will change...
 static void
 _buffer_manager_destroy(void)
 {
@@ -464,7 +463,6 @@ _buffer_manager_destroy(void)
    buffer_manager->destroyed = EINA_TRUE;
    _buffer_manager_deref();
 }
-*/
 
 static Buffer_Handle *
 _buffer_manager_alloc(const char *name, int w, int h, unsigned long *stride, int32_t *fd)
@@ -585,6 +583,8 @@ _create_failed(void *data, struct zwp_linux_buffer_params_v1 *params)
    Ecore_Wl2_Display *ewd = data;
 
    zwp_linux_buffer_params_v1_destroy(params);
+   _buffer_manager_deref();
+   _buffer_manager_destroy();
    ewd->wl.dmabuf = NULL;
 }
 
@@ -614,5 +614,6 @@ _ecore_wl2_buffer_test(Ecore_Wl2_Display *ewd)
 
   return;
 fail:
+  _buffer_manager_destroy();
   ewd->wl.dmabuf = NULL;
 }