From 72f0bfa2248b8e6595985827b042d94acc50bc76 Mon Sep 17 00:00:00 2001 From: Cedric BAIL Date: Wed, 21 Sep 2016 16:19:26 -0700 Subject: [PATCH] ecore,ecore_con: simplify destructor by linking future life cycle with object. --- src/lib/ecore/efl_io_copier.c | 4 +--- src/lib/ecore_con/efl_net_dialer_tcp.c | 6 +----- src/lib/ecore_con/efl_net_dialer_websocket.c | 13 ++----------- 3 files changed, 4 insertions(+), 19 deletions(-) diff --git a/src/lib/ecore/efl_io_copier.c b/src/lib/ecore/efl_io_copier.c index ad9a38a..1f571c8 100644 --- a/src/lib/ecore/efl_io_copier.c +++ b/src/lib/ecore/efl_io_copier.c @@ -104,6 +104,7 @@ _efl_io_copier_job_schedule(Eo *o, Efl_Io_Copier_Data *pd) efl_future_use(&pd->job, efl_loop_job(efl_loop_user_loop_get(o), o)); efl_future_then(pd->job, _efl_io_copier_job, NULL, NULL, o); + efl_future_link(o, pd->job); } /* NOTE: the returned slice may be smaller than requested since the @@ -690,9 +691,6 @@ _efl_io_copier_efl_object_destructor(Eo *o, Efl_Io_Copier_Data *pd) efl_io_copier_source_set(o, NULL); efl_io_copier_destination_set(o, NULL); - if (pd->job) - efl_future_cancel(pd->job); - efl_destructor(efl_super(o, MY_CLASS)); if (pd->buf) diff --git a/src/lib/ecore_con/efl_net_dialer_tcp.c b/src/lib/ecore_con/efl_net_dialer_tcp.c index c114d4d..b490aaa 100644 --- a/src/lib/ecore_con/efl_net_dialer_tcp.c +++ b/src/lib/ecore_con/efl_net_dialer_tcp.c @@ -60,9 +60,6 @@ _efl_net_dialer_tcp_efl_object_destructor(Eo *o, Efl_Net_Dialer_Tcp_Data *pd) (!efl_io_closer_closed_get(o))) efl_io_closer_close(o); - if (pd->connect.timeout) - efl_future_cancel(pd->connect.timeout); - if (pd->connect.thread) { ecore_thread_cancel(pd->connect.thread); @@ -82,8 +79,6 @@ _efl_net_dialer_tcp_connect_timeout(void *data, const Efl_Event *ev EINA_UNUSED) Efl_Net_Dialer_Tcp_Data *pd = efl_data_scope_get(o, MY_CLASS); Eina_Error err = ETIMEDOUT; - pd->connect.timeout = NULL; - if (pd->connect.thread) { ecore_thread_cancel(pd->connect.thread); @@ -175,6 +170,7 @@ _efl_net_dialer_tcp_efl_net_dialer_dial(Eo *o, Efl_Net_Dialer_Tcp_Data *pd EINA_ { efl_future_use(&pd->connect.timeout, efl_loop_timeout(efl_loop_user_loop_get(o), pd->timeout_dial, o)); efl_future_then(pd->connect.timeout, _efl_net_dialer_tcp_connect_timeout, NULL, NULL, o); + efl_future_link(o, pd->connect.timeout); } return 0; diff --git a/src/lib/ecore_con/efl_net_dialer_websocket.c b/src/lib/ecore_con/efl_net_dialer_websocket.c index fb126dd..52c0661 100644 --- a/src/lib/ecore_con/efl_net_dialer_websocket.c +++ b/src/lib/ecore_con/efl_net_dialer_websocket.c @@ -740,8 +740,6 @@ _efl_net_dialer_websocket_job(void *data, const Efl_Event *ev EINA_UNUSED) Eo *o = data; Efl_Net_Dialer_Websocket_Data *pd = efl_data_scope_get(o, MY_CLASS); - pd->job = NULL; - efl_ref(o); if (efl_io_reader_can_read_get(pd->http)) @@ -767,6 +765,7 @@ _efl_net_dialer_websocket_job_schedule(Eo *o, Efl_Net_Dialer_Websocket_Data *pd) if (!loop) return; efl_future_use(&pd->job, efl_loop_job(loop, o)); efl_future_then(pd->job, _efl_net_dialer_websocket_job, NULL, NULL, o); + efl_future_link(o, pd->job); } static void @@ -962,18 +961,9 @@ _efl_net_dialer_websocket_efl_object_destructor(Eo *o, Efl_Net_Dialer_Websocket_ efl_event_callback_array_del(pd->http, _efl_net_dialer_websocket_http_cbs(), o); - if (pd->close_timeout) - efl_future_cancel(pd->close_timeout); - efl_del(pd->http); pd->http = NULL; - if (pd->job) - { - efl_future_cancel(pd->job); - pd->job = NULL; - } - efl_destructor(efl_super(o, MY_CLASS)); eina_stringshare_replace(&pd->address_dial, NULL); @@ -1511,6 +1501,7 @@ _efl_net_dialer_websocket_close_request(Eo *o, Efl_Net_Dialer_Websocket_Data *pd efl_future_use(&pd->close_timeout, efl_loop_timeout(efl_loop_user_loop_get(o), 2.0, o)); efl_future_then(pd->close_timeout, _efl_net_dialer_websocket_close_request_timeout, NULL, NULL, o); + efl_future_link(o, pd->close_timeout); efl_io_writer_can_write_set(o, EINA_FALSE); -- 2.7.4