From b8a9d67c886f97c94aa396cdd852d6f32a7c9e8a Mon Sep 17 00:00:00 2001 From: Christopher Michael Date: Thu, 24 Jan 2013 09:59:50 +0000 Subject: [PATCH] Add code to delete the shm pool when we destroy the swapper. Signed-off-by: Christopher Michael SVN revision: 83291 --- .../evas/engines/wayland_shm/evas_swapper.c | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/modules/evas/engines/wayland_shm/evas_swapper.c b/src/modules/evas/engines/wayland_shm/evas_swapper.c index b7d3800390..1ec3d03447 100644 --- a/src/modules/evas/engines/wayland_shm/evas_swapper.c +++ b/src/modules/evas/engines/wayland_shm/evas_swapper.c @@ -42,6 +42,7 @@ struct _Wl_Swapper /* local function prototypes */ static Eina_Bool _evas_swapper_shm_pool_new(Wl_Swapper *ws); +static void _evas_swapper_shm_pool_free(Wl_Swapper *ws); static Eina_Bool _evas_swapper_buffer_new(Wl_Swapper *ws, Wl_Buffer *wb); static void _evas_swapper_buffer_free(Wl_Buffer *wb); static void _evas_swapper_buffer_put(Wl_Swapper *ws, Wl_Buffer *wb, Eina_Rectangle *rects, unsigned int count); @@ -137,6 +138,9 @@ evas_swapper_free(Wl_Swapper *ws) for (i = 0; i < ws->buff_num; i++) _evas_swapper_buffer_free(&(ws->buff[i])); + /* free the shm pool */ + _evas_swapper_shm_pool_free(ws); + /* free the allocated structure */ free(ws); } @@ -269,6 +273,22 @@ _evas_swapper_shm_pool_new(Wl_Swapper *ws) return EINA_TRUE; } +static void +_evas_swapper_shm_pool_free(Wl_Swapper *ws) +{ + /* check for valid swapper */ + if (!ws) return; + + /* check for valid pool */ + if (!ws->pool) return; + + /* unmap any existing data */ + if (ws->data) munmap(ws->data, ws->pool_size); + + /* destroy the shm pool */ + wl_shm_pool_destroy(ws->pool); +} + static Eina_Bool _evas_swapper_buffer_new(Wl_Swapper *ws, Wl_Buffer *wb) {