do not emit events from efl_io_closer_close() on destructor.
On destructor we're not supposed to emit events, I even thought that would be implicit, but it's not. If we do, for example an event handler that would 'efl_del()' on "EFL_IO_CLOSER_EVENT_CLOSED" would trigger too-many unrefs.
This commit is contained in:
parent
963e3a793d
commit
08c38713ce
|
@ -849,7 +849,11 @@ _efl_io_copier_efl_object_destructor(Eo *o, Efl_Io_Copier_Data *pd)
|
|||
|
||||
if (efl_io_closer_close_on_destructor_get(o) &&
|
||||
(!efl_io_closer_closed_get(o)))
|
||||
efl_io_closer_close(o);
|
||||
{
|
||||
efl_event_freeze(o);
|
||||
efl_io_closer_close(o);
|
||||
efl_event_thaw(o);
|
||||
}
|
||||
|
||||
efl_io_copier_source_set(o, NULL);
|
||||
efl_io_copier_destination_set(o, NULL);
|
||||
|
|
|
@ -127,7 +127,11 @@ _efl_io_file_efl_object_destructor(Eo *o, Efl_Io_File_Data *pd)
|
|||
{
|
||||
if (efl_io_closer_close_on_destructor_get(o) &&
|
||||
(!efl_io_closer_closed_get(o)))
|
||||
efl_io_closer_close(o);
|
||||
{
|
||||
efl_event_freeze(o);
|
||||
efl_io_closer_close(o);
|
||||
efl_event_thaw(o);
|
||||
}
|
||||
|
||||
efl_destructor(efl_super(o, MY_CLASS));
|
||||
|
||||
|
|
|
@ -1143,11 +1143,17 @@ _efl_net_dialer_http_efl_object_destructor(Eo *o, Efl_Net_Dialer_Http_Data *pd)
|
|||
else if (pd->pending_close)
|
||||
{
|
||||
efl_future_cancel(pd->pending_close);
|
||||
efl_event_freeze(o);
|
||||
efl_io_closer_close(o);
|
||||
efl_event_thaw(o);
|
||||
}
|
||||
else if (efl_io_closer_close_on_destructor_get(o) &&
|
||||
(!efl_io_closer_closed_get(o)))
|
||||
efl_io_closer_close(o);
|
||||
{
|
||||
efl_event_freeze(o);
|
||||
efl_io_closer_close(o);
|
||||
efl_event_thaw(o);
|
||||
}
|
||||
|
||||
efl_net_dialer_http_response_headers_clear(o);
|
||||
|
||||
|
|
|
@ -98,7 +98,11 @@ _efl_net_dialer_ssl_efl_object_destructor(Eo *o, Efl_Net_Dialer_Ssl_Data *pd)
|
|||
{
|
||||
if (efl_io_closer_close_on_destructor_get(o) &&
|
||||
(!efl_io_closer_closed_get(o)))
|
||||
efl_io_closer_close(o);
|
||||
{
|
||||
efl_event_freeze(o);
|
||||
efl_io_closer_close(o);
|
||||
efl_event_thaw(o);
|
||||
}
|
||||
|
||||
if (pd->sock)
|
||||
{
|
||||
|
|
|
@ -57,7 +57,11 @@ _efl_net_dialer_tcp_efl_object_destructor(Eo *o, Efl_Net_Dialer_Tcp_Data *pd)
|
|||
{
|
||||
if (efl_io_closer_close_on_destructor_get(o) &&
|
||||
(!efl_io_closer_closed_get(o)))
|
||||
efl_io_closer_close(o);
|
||||
{
|
||||
efl_event_freeze(o);
|
||||
efl_io_closer_close(o);
|
||||
efl_event_thaw(o);
|
||||
}
|
||||
|
||||
if (pd->connect.thread)
|
||||
{
|
||||
|
|
|
@ -58,7 +58,11 @@ _efl_net_dialer_udp_efl_object_destructor(Eo *o, Efl_Net_Dialer_Udp_Data *pd)
|
|||
{
|
||||
if (efl_io_closer_close_on_destructor_get(o) &&
|
||||
(!efl_io_closer_closed_get(o)))
|
||||
efl_io_closer_close(o);
|
||||
{
|
||||
efl_event_freeze(o);
|
||||
efl_io_closer_close(o);
|
||||
efl_event_thaw(o);
|
||||
}
|
||||
|
||||
if (pd->resolver.thread)
|
||||
{
|
||||
|
|
|
@ -48,7 +48,11 @@ _efl_net_dialer_unix_efl_object_destructor(Eo *o, Efl_Net_Dialer_Unix_Data *pd)
|
|||
{
|
||||
if (efl_io_closer_close_on_destructor_get(o) &&
|
||||
(!efl_io_closer_closed_get(o)))
|
||||
efl_io_closer_close(o);
|
||||
{
|
||||
efl_event_freeze(o);
|
||||
efl_io_closer_close(o);
|
||||
efl_event_thaw(o);
|
||||
}
|
||||
|
||||
if (pd->connect.thread)
|
||||
{
|
||||
|
|
|
@ -75,7 +75,11 @@ _efl_net_server_udp_client_efl_object_destructor(Eo *o, Efl_Net_Server_Udp_Clien
|
|||
{
|
||||
if (efl_io_closer_close_on_destructor_get(o) &&
|
||||
(!efl_io_closer_closed_get(o)))
|
||||
efl_io_closer_close(o);
|
||||
{
|
||||
efl_event_freeze(o);
|
||||
efl_io_closer_close(o);
|
||||
efl_event_thaw(o);
|
||||
}
|
||||
|
||||
efl_destructor(efl_super(o, MY_CLASS));
|
||||
|
||||
|
|
|
@ -91,7 +91,11 @@ _efl_net_socket_fd_efl_object_destructor(Eo *o, Efl_Net_Socket_Fd_Data *pd)
|
|||
{
|
||||
if (efl_io_closer_close_on_destructor_get(o) &&
|
||||
(!efl_io_closer_closed_get(o)))
|
||||
efl_io_closer_close(o);
|
||||
{
|
||||
efl_event_freeze(o);
|
||||
efl_io_closer_close(o);
|
||||
efl_event_thaw(o);
|
||||
}
|
||||
|
||||
efl_destructor(efl_super(o, MY_CLASS));
|
||||
|
||||
|
|
|
@ -434,7 +434,11 @@ _efl_net_socket_ssl_efl_object_destructor(Eo *o, Efl_Net_Socket_Ssl_Data *pd)
|
|||
{
|
||||
if (efl_io_closer_close_on_destructor_get(o) &&
|
||||
(!efl_io_closer_closed_get(o)))
|
||||
efl_io_closer_close(o);
|
||||
{
|
||||
efl_event_freeze(o);
|
||||
efl_io_closer_close(o);
|
||||
efl_event_thaw(o);
|
||||
}
|
||||
|
||||
efl_destructor(efl_super(o, MY_CLASS));
|
||||
|
||||
|
|
|
@ -166,7 +166,11 @@ EOLIAN static void
|
|||
_efl_io_buffer_efl_object_destructor(Eo *o, Efl_Io_Buffer_Data *pd)
|
||||
{
|
||||
if (!efl_io_closer_closed_get(o))
|
||||
efl_io_closer_close(o);
|
||||
{
|
||||
efl_event_freeze(o);
|
||||
efl_io_closer_close(o);
|
||||
efl_event_thaw(o);
|
||||
}
|
||||
|
||||
efl_destructor(efl_super(o, MY_CLASS));
|
||||
|
||||
|
|
|
@ -252,7 +252,11 @@ EOLIAN static void
|
|||
_efl_io_queue_efl_object_destructor(Eo *o, Efl_Io_Queue_Data *pd)
|
||||
{
|
||||
if (!efl_io_closer_closed_get(o))
|
||||
efl_io_closer_close(o);
|
||||
{
|
||||
efl_event_freeze(o);
|
||||
efl_io_closer_close(o);
|
||||
efl_event_thaw(o);
|
||||
}
|
||||
|
||||
efl_destructor(efl_super(o, MY_CLASS));
|
||||
|
||||
|
|
Loading…
Reference in New Issue