summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCedric BAIL <cedric@osg.samsung.com>2017-08-25 10:52:22 -0700
committerCedric BAIL <cedric@osg.samsung.com>2017-08-25 10:52:22 -0700
commit9ba662bd636a21f8fe4f6620d947d623ad99316f (patch)
tree75c25c375e06fa04c29f998a0e6bc6bc1f80f01a
parentdcfebcd2d9e672db5f7cf7fd59dad0a2b26bea11 (diff)
evas: destroy seats and inputs before the display disapear.
-rw-r--r--src/lib/evas/canvas/evas_main.c42
1 files changed, 21 insertions, 21 deletions
diff --git a/src/lib/evas/canvas/evas_main.c b/src/lib/evas/canvas/evas_main.c
index 0ebe72d9ed..9a8e1992d2 100644
--- a/src/lib/evas/canvas/evas_main.c
+++ b/src/lib/evas/canvas/evas_main.c
@@ -378,6 +378,27 @@ next_zombie:
378 evas_event_callback_all_del(eo_e); 378 evas_event_callback_all_del(eo_e);
379 evas_event_callback_cleanup(eo_e); 379 evas_event_callback_cleanup(eo_e);
380 380
381 EINA_LIST_FREE(e->touch_points, touch_point)
382 free(touch_point);
383
384 _evas_device_cleanup(eo_e);
385 e->focused_by = eina_list_free(e->focused_by);
386
387 while (e->seats)
388 {
389 Evas_Pointer_Seat *pseat = EINA_INLIST_CONTAINER_GET(e->seats, Evas_Pointer_Seat);
390
391 eina_list_free(pseat->object.in);
392 while (pseat->pointers)
393 {
394 Evas_Pointer_Data *pdata = EINA_INLIST_CONTAINER_GET(pseat->pointers, Evas_Pointer_Data);
395 pseat->pointers = eina_inlist_remove(pseat->pointers, pseat->pointers);
396 free(pdata);
397 }
398 e->seats = eina_inlist_remove(e->seats, e->seats);
399 free(pseat);
400 }
401
381 /* Ector surface may require an existing output to finish its job */ 402 /* Ector surface may require an existing output to finish its job */
382 e->engine.func->ector_destroy(_evas_engine_context(e), e->ector); 403 e->engine.func->ector_destroy(_evas_engine_context(e), e->ector);
383 /* cleanup engine backend */ 404 /* cleanup engine backend */
@@ -424,27 +445,6 @@ next_zombie:
424 } 445 }
425 SLKU(e->post_render.lock); 446 SLKU(e->post_render.lock);
426 447
427 EINA_LIST_FREE(e->touch_points, touch_point)
428 free(touch_point);
429
430 _evas_device_cleanup(eo_e);
431 e->focused_by = eina_list_free(e->focused_by);
432
433 while (e->seats)
434 {
435 Evas_Pointer_Seat *pseat = EINA_INLIST_CONTAINER_GET(e->seats, Evas_Pointer_Seat);
436
437 eina_list_free(pseat->object.in);
438 while (pseat->pointers)
439 {
440 Evas_Pointer_Data *pdata = EINA_INLIST_CONTAINER_GET(pseat->pointers, Evas_Pointer_Data);
441 pseat->pointers = eina_inlist_remove(pseat->pointers, pseat->pointers);
442 free(pdata);
443 }
444 e->seats = eina_inlist_remove(e->seats, e->seats);
445 free(pseat);
446 }
447
448 eina_lock_free(&(e->lock_objects)); 448 eina_lock_free(&(e->lock_objects));
449 eina_spinlock_free(&(e->render.lock)); 449 eina_spinlock_free(&(e->render.lock));
450 eina_spinlock_free(&(e->post_render.lock)); 450 eina_spinlock_free(&(e->post_render.lock));