summaryrefslogtreecommitdiff
path: root/legacy/evas/src/lib/canvas/evas_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'legacy/evas/src/lib/canvas/evas_main.c')
-rw-r--r--legacy/evas/src/lib/canvas/evas_main.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/legacy/evas/src/lib/canvas/evas_main.c b/legacy/evas/src/lib/canvas/evas_main.c
index 5579ed4..c58700a 100644
--- a/legacy/evas/src/lib/canvas/evas_main.c
+++ b/legacy/evas/src/lib/canvas/evas_main.c
@@ -202,19 +202,22 @@ evas_free(Evas *e)
202 if (e->walking_list == 0) evas_render_idle_flush(e); 202 if (e->walking_list == 0) evas_render_idle_flush(e);
203 203
204 if (e->walking_list > 0) return; 204 if (e->walking_list > 0) return;
205 if (!e->callbacks) return; 205
206 if (e->callbacks->deletions_waiting) return; 206 if (e->callbacks)
207
208 e->callbacks->deletions_waiting = 0;
209 evas_event_callback_list_post_free(&e->callbacks->callbacks);
210 if (!e->callbacks->callbacks)
211 { 207 {
212 free(e->callbacks); 208 if (e->callbacks->deletions_waiting) return;
213 e->callbacks = NULL; 209
210 e->callbacks->deletions_waiting = 0;
211 evas_event_callback_list_post_free(&e->callbacks->callbacks);
212 if (!e->callbacks->callbacks)
213 {
214 free(e->callbacks);
215 e->callbacks = NULL;
216 }
217
218 _evas_post_event_callback_free(e);
214 } 219 }
215 220
216 _evas_post_event_callback_free(e);
217
218 del = 1; 221 del = 1;
219 e->walking_list++; 222 e->walking_list++;
220 e->cleanup = 1; 223 e->cleanup = 1;