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