derekf pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=ae9d2904c705c6e94d5acd0fe5f8f16b1c177e54

commit ae9d2904c705c6e94d5acd0fe5f8f16b1c177e54
Author: Derek Foreman <der...@osg.samsung.com>
Date:   Tue Dec 6 16:37:35 2016 -0600

    test dmabuf pixmaps properly
    
    If we can't handle a dmabuf format we now properly tell the client instead
    of accepting it anyway and falling apart later.
---
 src/bin/e_pixmap.c | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/src/bin/e_pixmap.c b/src/bin/e_pixmap.c
index ab24c16..f46a994 100644
--- a/src/bin/e_pixmap.c
+++ b/src/bin/e_pixmap.c
@@ -1051,10 +1051,23 @@ e_pixmap_alias(E_Pixmap *cp, E_Pixmap_Type type, ...)
 E_API Eina_Bool
 e_pixmap_dmabuf_test(struct linux_dmabuf_buffer *dmabuf)
 {
+   Evas_Native_Surface ns;
+   Evas_Object *test;
    int size;
    void *data;
 
-   if (e_comp->gl) return EINA_TRUE;
+   if (e_comp->gl)
+     {
+        ns.type = EVAS_NATIVE_SURFACE_WL_DMABUF;
+        ns.version = EVAS_NATIVE_SURFACE_VERSION;
+        ns.data.wl_dmabuf.attr = &dmabuf->attributes;
+        ns.data.wl_dmabuf.resource = NULL;
+        test = evas_object_image_add(e_comp->evas);
+        evas_object_image_native_surface_set(test, &ns);
+        evas_object_del(test);
+        if (!ns.data.wl_dmabuf.attr) return EINA_FALSE;
+        return EINA_TRUE;
+     }
 
    /* TODO: Software rendering for multi-plane formats */
    if (dmabuf->attributes.n_planes != 1) return EINA_FALSE;

-- 


Reply via email to