cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=72f0bfa2248b8e6595985827b042d94acc50bc76

commit 72f0bfa2248b8e6595985827b042d94acc50bc76
Author: Cedric BAIL <ced...@osg.samsung.com>
Date:   Wed Sep 21 16:19:26 2016 -0700

    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);
 

-- 


Reply via email to