From 9ba662bd636a21f8fe4f6620d947d623ad99316f Mon Sep 17 00:00:00 2001 From: Cedric BAIL Date: Fri, 25 Aug 2017 10:52:22 -0700 Subject: [PATCH] evas: destroy seats and inputs before the display disapear. --- src/lib/evas/canvas/evas_main.c | 42 ++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/lib/evas/canvas/evas_main.c b/src/lib/evas/canvas/evas_main.c index 0ebe72d..9a8e199 100644 --- a/src/lib/evas/canvas/evas_main.c +++ b/src/lib/evas/canvas/evas_main.c @@ -378,6 +378,27 @@ next_zombie: evas_event_callback_all_del(eo_e); evas_event_callback_cleanup(eo_e); + EINA_LIST_FREE(e->touch_points, touch_point) + free(touch_point); + + _evas_device_cleanup(eo_e); + e->focused_by = eina_list_free(e->focused_by); + + while (e->seats) + { + Evas_Pointer_Seat *pseat = EINA_INLIST_CONTAINER_GET(e->seats, Evas_Pointer_Seat); + + eina_list_free(pseat->object.in); + while (pseat->pointers) + { + Evas_Pointer_Data *pdata = EINA_INLIST_CONTAINER_GET(pseat->pointers, Evas_Pointer_Data); + pseat->pointers = eina_inlist_remove(pseat->pointers, pseat->pointers); + free(pdata); + } + e->seats = eina_inlist_remove(e->seats, e->seats); + free(pseat); + } + /* Ector surface may require an existing output to finish its job */ e->engine.func->ector_destroy(_evas_engine_context(e), e->ector); /* cleanup engine backend */ @@ -424,27 +445,6 @@ next_zombie: } SLKU(e->post_render.lock); - EINA_LIST_FREE(e->touch_points, touch_point) - free(touch_point); - - _evas_device_cleanup(eo_e); - e->focused_by = eina_list_free(e->focused_by); - - while (e->seats) - { - Evas_Pointer_Seat *pseat = EINA_INLIST_CONTAINER_GET(e->seats, Evas_Pointer_Seat); - - eina_list_free(pseat->object.in); - while (pseat->pointers) - { - Evas_Pointer_Data *pdata = EINA_INLIST_CONTAINER_GET(pseat->pointers, Evas_Pointer_Data); - pseat->pointers = eina_inlist_remove(pseat->pointers, pseat->pointers); - free(pdata); - } - e->seats = eina_inlist_remove(e->seats, e->seats); - free(pseat); - } - eina_lock_free(&(e->lock_objects)); eina_spinlock_free(&(e->render.lock)); eina_spinlock_free(&(e->post_render.lock)); -- 2.7.4