ecore - efl thread - remove more copy & paste in fd in clearing handling

move to common shared function to reduce c&p
This commit is contained in:
Carsten Haitzler 2019-07-20 11:46:07 +01:00
parent 687b06fb3f
commit 40800366b2
1 changed files with 11 additions and 10 deletions

View File

@ -960,6 +960,15 @@ _efl_thread_efl_io_reader_eos_get(const Eo *obj EINA_UNUSED, Efl_Thread_Data *pd
return pd->fd.eos_read;
}
static void
_io_writer_write_fd_in_clear(Efl_Thread_Data *pd)
{
close(pd->fd.in);
pd->fd.in = -1;
efl_del(pd->fd.in_handler);
pd->fd.in_handler = NULL;
}
EOLIAN static Eina_Error
_efl_thread_efl_io_writer_write(Eo *obj, Efl_Thread_Data *pd, Eina_Slice *slice, Eina_Slice *remaining)
{
@ -991,22 +1000,14 @@ _efl_thread_efl_io_writer_write(Eo *obj, Efl_Thread_Data *pd, Eina_Slice *slice,
efl_io_writer_can_write_set(obj, EINA_FALSE);
if (r == 0)
{
close(pd->fd.in);
pd->fd.in = -1;
efl_del(pd->fd.in_handler);
pd->fd.in_handler = NULL;
_io_writer_write_fd_in_clear(pd);
_thread_exit_eval(obj, pd);
return EPIPE;
}
return 0;
err:
if ((pd->fd.in != -1) && (errno != EAGAIN))
{
close(pd->fd.in);
pd->fd.in = -1;
efl_del(pd->fd.in_handler);
pd->fd.in_handler = NULL;
}
_io_writer_write_fd_in_clear(pd);
if (remaining) *remaining = *slice;
slice->len = 0;
slice->mem = NULL;