summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDerek Foreman <derekf@osg.samsung.com>2016-12-06 16:20:46 -0600
committerDerek Foreman <derekf@osg.samsung.com>2016-12-06 16:34:54 -0600
commitdf4f377ad2a3a1ebfa0ff1b57b4604d245e33870 (patch)
tree63e7f87ff4c6b0af454a49c19c761f223c690c2f
parent7fa02c89946a3583249b0574ae1db43acfcad147 (diff)
downloadefl-df4f377ad2a3a1ebfa0ff1b57b4604d245e33870.tar.gz
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.
-rw-r--r--src/modules/evas/engines/wayland_shm/evas_dmabuf.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/modules/evas/engines/wayland_shm/evas_dmabuf.c b/src/modules/evas/engines/wayland_shm/evas_dmabuf.c
index 41073e00e3..eab8df5ccc 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;