1 #ifdef HAVE_CONFIG_H
2 # include <config.h>
3 #endif
4 
5 #include <stdlib.h>
6 
7 #include <Eo.h>
8 
9 #include "Ecore.h"
10 #include "ecore_private.h"
11 
12 EFL_CALLBACKS_ARRAY_DEFINE(ecore_idle_enterer_callbacks,
13                           { EFL_LOOP_EVENT_IDLE_ENTER, _ecore_factorized_idle_process },
14                           { EFL_EVENT_DEL, _ecore_factorized_idle_event_del });
15 
16 
17 EAPI Ecore_Idle_Enterer *
ecore_idle_enterer_add(Ecore_Task_Cb func,const void * data)18 ecore_idle_enterer_add(Ecore_Task_Cb func,
19                        const void   *data)
20 {
21    return _ecore_factorized_idle_add(ecore_idle_enterer_callbacks(), func, data);
22 }
23 
24 EAPI Ecore_Idle_Enterer *
ecore_idle_enterer_before_add(Ecore_Task_Cb func,const void * data)25 ecore_idle_enterer_before_add(Ecore_Task_Cb func,
26                               const void   *data)
27 {
28    Ecore_Idle_Enterer *ie = NULL;
29    ie = _ecore_factorized_idle_add(ecore_idle_enterer_callbacks(), func, data);
30 
31    // This avoid us duplicating code and should only be slightly slower
32    // due to a useless cycle of callback registration
33    efl_event_callback_array_del(_mainloop_singleton, ecore_idle_enterer_callbacks(), ie);
34    efl_event_callback_array_priority_add(_mainloop_singleton, ecore_idle_enterer_callbacks(), EFL_CALLBACK_PRIORITY_BEFORE, ie);
35 
36    return ie;
37 }
38 
39 EAPI void *
ecore_idle_enterer_del(Ecore_Idle_Enterer * idle_enterer)40 ecore_idle_enterer_del(Ecore_Idle_Enterer *idle_enterer)
41 {
42    return _ecore_factorized_idle_del(idle_enterer);
43 }
44