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; --