diff options
author | Derek Foreman <derekf@osg.samsung.com> | 2016-12-06 16:20:46 -0600 |
---|---|---|
committer | Derek Foreman <derekf@osg.samsung.com> | 2016-12-06 16:34:54 -0600 |
commit | df4f377ad2a3a1ebfa0ff1b57b4604d245e33870 (patch) | |
tree | 63e7f87ff4c6b0af454a49c19c761f223c690c2f | |
parent | 7fa02c89946a3583249b0574ae1db43acfcad147 (diff) | |
download | efl-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.c | 2 |
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; |