From 4a0b257138f1c7cbb821028472049a09df4db7a6 Mon Sep 17 00:00:00 2001 From: Cedric Bail Date: Wed, 2 May 2018 13:44:01 -0700 Subject: [PATCH] eldbus: manage death of children during invalidate. Differential Revision: https://phab.enlightenment.org/D6091 --- src/lib/eldbus/eldbus_model_connection.c | 10 ++++------ src/lib/eldbus/eldbus_model_connection.eo | 2 +- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/lib/eldbus/eldbus_model_connection.c b/src/lib/eldbus/eldbus_model_connection.c index 28f0242..2af0aff 100644 --- a/src/lib/eldbus/eldbus_model_connection.c +++ b/src/lib/eldbus/eldbus_model_connection.c @@ -22,23 +22,21 @@ _eldbus_model_connection_efl_object_constructor(Eo *obj, Eldbus_Model_Connection } static void -_eldbus_model_connection_efl_object_destructor(Eo *obj, Eldbus_Model_Connection_Data *pd) +_eldbus_model_connection_efl_object_invalidate(Eo *obj, Eldbus_Model_Connection_Data *pd) { Eldbus_Children_Slice_Promise *slice; - Eo *child; if (pd->pending) eldbus_pending_cancel(pd->pending); - EINA_LIST_FREE(pd->childrens, child) - efl_del(child); - EINA_LIST_FREE(pd->requests, slice) { eina_promise_reject(slice->p, EFL_MODEL_ERROR_UNKNOWN); free(slice); } - efl_destructor(efl_super(obj, ELDBUS_MODEL_CONNECTION_CLASS)); + pd->childrens = eina_list_free(pd->childrens); + + efl_invalidate(efl_super(obj, ELDBUS_MODEL_CONNECTION_CLASS)); } static void diff --git a/src/lib/eldbus/eldbus_model_connection.eo b/src/lib/eldbus/eldbus_model_connection.eo index 5b392ab..d064027 100644 --- a/src/lib/eldbus/eldbus_model_connection.eo +++ b/src/lib/eldbus/eldbus_model_connection.eo @@ -3,7 +3,7 @@ class Eldbus.Model.Connection (Eldbus.Model) { implements { Efl.Object.constructor; - Efl.Object.destructor; + Efl.Object.invalidate; Efl.Model.children_slice_get; Efl.Model.children_count { get; } } -- 2.7.4