derekf pushed a commit to branch master.

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

commit df4f377ad2a3a1ebfa0ff1b57b4604d245e33870
Author: Derek Foreman <der...@osg.samsung.com>
Date:   Tue Dec 6 16:20:46 2016 -0600

    wayland_shm: track mappings more effectively
    
    Unmap any active mappings from buffer_destroy.  This also means we need
    to clear the mapping after unmapping in fallback.
---
 src/modules/evas/engines/wayland_shm/evas_dmabuf.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/modules/evas/engines/wayland_shm/evas_dmabuf.c 
b/src/modules/evas/engines/wayland_shm/evas_dmabuf.c
index 41073e0..eab8df5 100644
--- a/src/modules/evas/engines/wayland_shm/evas_dmabuf.c
+++ b/src/modules/evas/engines/wayland_shm/evas_dmabuf.c
@@ -449,6 +449,7 @@ _fallback(Dmabuf_Surface *s, int w, int h)
      memcpy(new_data + y * w * 4, old_data + y * b->stride, w * 4);
    surf->funcs.post(surf, NULL, 0, EINA_FALSE);
    _buffer_manager_unmap(b);
+   b->mapping = NULL;
 
 out:
    _internal_evas_dmabuf_surface_destroy(s);
@@ -542,6 +543,7 @@ _evas_dmabuf_buffer_destroy(Dmabuf_Buffer *b)
         return;
      }
    if (b->fd != -1) close(b->fd);
+   if (b->mapping) _buffer_manager_unmap(b);
    _buffer_manager_discard(b);
    if (b->wl_buffer) wl_buffer_destroy(b->wl_buffer);
    b->wl_buffer = NULL;

-- 


Reply via email to