diff --git a/src/lib/ecore/efl_loop_fd.c b/src/lib/ecore/efl_loop_fd.c index 50bd4c2b78..80e7a18538 100644 --- a/src/lib/ecore/efl_loop_fd.c +++ b/src/lib/ecore/efl_loop_fd.c @@ -166,6 +166,19 @@ _efl_loop_fd_eo_base_constructor(Eo *obj, Efl_Loop_Fd_Data *pd) return obj; } +static void +_efl_loop_fd_eo_base_parent_set(Eo *obj, Efl_Loop_Fd_Data *pd, Eo_Base *parent) +{ + if (pd->handler) ecore_main_fd_handler_del(pd->handler); + pd->handler = NULL; + + eo_parent_set(eo_super(obj, MY_CLASS), parent); + + if (parent == NULL) return ; + + _efl_loop_fd_reset(obj, pd); +} + static void _efl_loop_fd_eo_base_destructor(Eo *obj, Efl_Loop_Fd_Data *pd) { diff --git a/src/lib/ecore/efl_loop_fd.eo b/src/lib/ecore/efl_loop_fd.eo index ec1003d666..92848463e6 100644 --- a/src/lib/ecore/efl_loop_fd.eo +++ b/src/lib/ecore/efl_loop_fd.eo @@ -41,5 +41,6 @@ class Efl.Loop.Fd (Efl.Loop_User) implements { Eo.Base.constructor; Eo.Base.destructor; + Eo.Base.parent.set; } }