ecore: rely on efl_provider_{un,}register to do the job of efl_loop_{un,}register.
authorCedric BAIL <cedric.bail@free.fr>
Thu, 11 Jul 2019 21:59:05 +0000 (14:59 -0700)
committerSangHyeon Jade Lee <sh10233.lee@samsung.com>
Tue, 23 Jul 2019 05:04:43 +0000 (14:04 +0900)
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D9294

src/lib/ecore/ecore_private.h
src/lib/ecore/efl_loop.c
src/lib/ecore/efl_loop.eo

index f025acb..4c957c9 100644 (file)
@@ -116,7 +116,6 @@ struct _Efl_Loop_Future_Scheduler
 struct _Efl_Loop_Data
 {
    double               loop_time;
-   Eina_Hash           *providers;
 
    Efl_Loop_Future_Scheduler future_scheduler;
 
index 7a61cab..a21aeea 100644 (file)
@@ -87,19 +87,6 @@ efl_exit(int exit_code)
    efl_loop_quit(efl_main_loop_get(), v);
 }
 
-EOLIAN static Efl_Object *
-_efl_loop_efl_object_provider_find(const Eo *obj, Efl_Loop_Data *pd, const Efl_Object *klass)
-{
-   Efl_Object *r;
-
-   if (klass == EFL_LOOP_CLASS) return (Efl_Object *) obj;
-
-   r = eina_hash_find(pd->providers, &klass);
-   if (r) return r;
-
-   return efl_provider_find(efl_super(obj, EFL_LOOP_CLASS), klass);
-}
-
 EAPI int
 efl_loop_exit_code_process(Eina_Value *value)
 {
@@ -286,7 +273,6 @@ _efl_loop_efl_object_constructor(Eo *obj, Efl_Loop_Data *pd)
    efl_event_callback_array_add(obj, event_catcher_watch(), pd);
 
    pd->loop_time = ecore_time_get();
-   pd->providers = eina_hash_pointer_new(EINA_FREE_CB(efl_unref));
    pd->epoll_fd = -1;
    pd->timer_fd = -1;
    pd->future_message_handler = efl_add(EFL_LOOP_MESSAGE_FUTURE_HANDLER_CLASS, obj);
@@ -302,10 +288,6 @@ _efl_loop_efl_object_invalidate(Eo *obj, Efl_Loop_Data *pd)
 
    _ecore_main_content_clear(obj, pd);
 
-   // Even if we are just refcounting provider, efl_provider_find won't reach them after invalidate
-   eina_hash_free(pd->providers);
-   pd->providers = NULL;
-
    pd->poll_low = NULL;
    pd->poll_medium = NULL;
    pd->poll_high = NULL;
@@ -517,20 +499,17 @@ timer_error:
 }
 
 static Eina_Bool
-_efl_loop_register(Eo *obj EINA_UNUSED, Efl_Loop_Data *pd, const Efl_Class *klass, const Efl_Object *provider)
+_efl_loop_register(Eo *obj, Efl_Loop_Data *pd EINA_UNUSED,
+                   const Efl_Class *klass, const Efl_Object *provider)
 {
-   // The passed object does not provide that said class.
-   if (!efl_isa(provider, klass)) return EINA_FALSE;
-
-   // Note: I would prefer to use efl_xref here, but I can't figure a nice way to
-   // call efl_xunref on hash destruction.
-   return eina_hash_add(pd->providers, &klass, efl_ref(provider));
+   return efl_provider_register(obj, klass, provider);
 }
 
 static Eina_Bool
-_efl_loop_unregister(Eo *obj EINA_UNUSED, Efl_Loop_Data *pd, const Efl_Class *klass, const Efl_Object *provider)
+_efl_loop_unregister(Eo *obj, Efl_Loop_Data *pd EINA_UNUSED,
+                     const Efl_Class *klass, const Efl_Object *provider)
 {
-   return eina_hash_del(pd->providers, &klass, provider);
+   return efl_provider_unregister(obj, klass, provider);
 }
 
 void
index 7e1bc10..eca974b 100644 (file)
@@ -133,7 +133,6 @@ abstract Efl.Loop extends Efl.Task
       Efl.Object.constructor;
       Efl.Object.invalidate;
       Efl.Object.destructor;
-      Efl.Object.provider_find;
       Efl.Task.run;
       Efl.Task.end;
    }