From: Kristian Høgsberg Date: Tue, 10 Apr 2012 15:32:35 +0000 (-0400) Subject: window: Only unmap shm surface backing memory if it belongs to surface X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=24b5e230faa811bdf2fb89e87beacac55354ceea;p=profile%2Fivi%2Fweston-ivi-shell.git window: Only unmap shm surface backing memory if it belongs to surface Memory allocated out of the resize shm pool will be unmapped when the pool is destroyed. --- diff --git a/clients/window.c b/clients/window.c index 9be6764..8a682b4 100644 --- a/clients/window.c +++ b/clients/window.c @@ -464,7 +464,8 @@ shm_surface_data_destroy(void *p) struct shm_surface_data *data = p; wl_buffer_destroy(data->data.buffer); - munmap(data->map, data->length); + if (data->map) + munmap(data->map, data->length); } static struct wl_shm_pool * @@ -523,9 +524,10 @@ display_create_shm_surface(struct display *display, if (window && window->pool && data->length < window->pool_size) { pool = window->pool; map = window->pool_data; + data->map = NULL; } else { - pool = make_shm_pool(display, data->length, &data->map); - map = data->map; + pool = make_shm_pool(display, data->length, &map); + data->map = map; } surface = cairo_image_surface_create_for_data (map, @@ -547,7 +549,7 @@ display_create_shm_surface(struct display *display, rectangle->height, stride, format); - if (map == data->map) + if (data->map) wl_shm_pool_destroy(pool); return surface;