summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@osg.samsung.com>2017-08-04 16:11:00 -0400
committerMike Blumenkrantz <zmike@osg.samsung.com>2017-08-04 16:10:43 -0400
commit2961cb2550ada6be37a7371feaf237bb5e8e2038 (patch)
treea828cc16dada720f25a6221301b77a4a3312a5fb
parentf03028d22f341e9ae3745f079fb467b009993037 (diff)
downloadefl-2961cb2550ada6be37a7371feaf237bb5e8e2038.tar.gz
efl-wl: do shm pool ref/unref for bm safety
@fix
-rw-r--r--src/lib/efl_wl/efl_wl.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/lib/efl_wl/efl_wl.c b/src/lib/efl_wl/efl_wl.c
index 3b8729c8fe..fbb6b11829 100644
--- a/src/lib/efl_wl/efl_wl.c
+++ b/src/lib/efl_wl/efl_wl.c
@@ -99,6 +99,7 @@ typedef struct Comp_Buffer
int x, y, w, h;
struct wl_listener destroy_listener;
struct wl_shm_buffer *shm_buffer;
+ struct wl_shm_pool *pool;
struct linux_dmabuf_buffer *dmabuf_buffer;
Eina_Bool dbg : 1;
} Comp_Buffer;
@@ -1254,6 +1255,7 @@ comp_surface_buffer_detach(Comp_Buffer **pbuffer)
eina_list_free(buffer->renders);
wl_list_remove(&buffer->destroy_listener.link);
//if (buffer->dbg) fprintf(stderr, "BUFFER(%d) RELEASE\n", wl_resource_get_id(buffer->res));
+ if (buffer->pool) wl_shm_pool_unref(buffer->pool);
wl_resource_queue_event(buffer->res, WL_BUFFER_RELEASE);
free(buffer);
*pbuffer = NULL;
@@ -1301,6 +1303,7 @@ comp_surface_commit_image_state(Comp_Surface *cs, Comp_Buffer *buffer, Evas_Obje
//if (cs->subsurface)
//fprintf(stderr, "SET CB\n");
evas_object_image_pixels_get_callback_set(o, comp_surface_pixels_get, cs);
+ buffer->pool = wl_shm_buffer_ref_pool(buffer->shm_buffer);
}
else
{