summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCedric BAIL <cedric@osg.samsung.com>2016-09-21 16:19:26 -0700
committerCedric BAIL <cedric@osg.samsung.com>2016-09-21 16:19:53 -0700
commit72f0bfa2248b8e6595985827b042d94acc50bc76 (patch)
tree03976acd0b5d916a6691d511424e546bd231ac88
parent3c3c51f02970fe020897e8602396ac4808605e80 (diff)
downloadefl-72f0bfa2248b8e6595985827b042d94acc50bc76.tar.gz
ecore,ecore_con: simplify destructor by linking future life cycle with object.
-rw-r--r--src/lib/ecore/efl_io_copier.c4
-rw-r--r--src/lib/ecore_con/efl_net_dialer_tcp.c6
-rw-r--r--src/lib/ecore_con/efl_net_dialer_websocket.c13
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 ad9a38a361..1f571c8d2c 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 c114d4d88a..b490aaa36f 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 fb126dd74e..52c066103f 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);