From f90641200b543798bf93b981d1b7f5b943f569d2 Mon Sep 17 00:00:00 2001 From: ChunEon Park Date: Tue, 20 Nov 2012 11:52:16 +0000 Subject: [PATCH] evas - fix the memory leak - eina_rectangles allocated for clip_changes. SVN revision: 79469 --- ChangeLog | 4 ++++ src/lib/evas/canvas/evas_render.c | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/ChangeLog b/ChangeLog index 05977ad8f0..b67f495363 100644 --- a/ChangeLog +++ b/ChangeLog @@ -80,3 +80,7 @@ * Fix EINA_INLIST_FOREACH_SAFE macro to work when inlist is not the first item in the struct. + +2012-11-20 ChunEon Park + + * Fix the evas memory leak - eina_rectangles allocated internally. diff --git a/src/lib/evas/canvas/evas_render.c b/src/lib/evas/canvas/evas_render.c index 9762dda943..f5b3bda236 100644 --- a/src/lib/evas/canvas/evas_render.c +++ b/src/lib/evas/canvas/evas_render.c @@ -124,6 +124,13 @@ _canvas_obscured_clear(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list EINA_UNUSE } } +static Eina_Bool +_evas_clip_changes_free(const void *container EINA_UNUSED, void *data, void *fdata EINA_UNUSED) +{ + eina_rectangle_free(data); + return EINA_TRUE; +} + static Eina_Bool _evas_render_had_map(Evas_Object_Protected_Data *obj) { @@ -1743,6 +1750,7 @@ evas_render_updates_internal(Evas *eo_e, eina_array_clean(&e->render_objects); eina_array_clean(&e->restack_objects); eina_array_clean(&e->temporary_objects); + eina_array_foreach(&e->clip_changes, _evas_clip_changes_free, NULL); eina_array_clean(&e->clip_changes); /* we should flush here and have a mempool system for this eina_array_flush(&e->active_objects); @@ -1860,6 +1868,7 @@ _canvas_render_idle_flush(Eo *eo_e, void *_pd, va_list *list EINA_UNUSED) eina_array_flush(&e->delete_objects); eina_array_flush(&e->obscuring_objects); eina_array_flush(&e->temporary_objects); + eina_array_foreach(&e->clip_changes, _evas_clip_changes_free, NULL); eina_array_flush(&e->clip_changes); e->invalidate = EINA_TRUE;