From 2961cb2550ada6be37a7371feaf237bb5e8e2038 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 4 Aug 2017 16:11:00 -0400 Subject: [PATCH] efl-wl: do shm pool ref/unref for bm safety @fix --- src/lib/efl_wl/efl_wl.c | 3 +++ 1 file changed, 3 insertions(+) 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 {