1 #ifndef _ECORE_PRIVATE_H
2 #define _ECORE_PRIVATE_H
6 extern int _ecore_log_dom;
7 #ifdef _ECORE_DEFAULT_LOG_DOM
8 # undef _ECORE_DEFAULT_LOG_DOM
10 #define _ECORE_DEFAULT_LOG_DOM _ecore_log_dom
12 #ifdef ECORE_DEFAULT_LOG_COLOR
13 # undef ECORE_DEFAULT_LOG_COLOR
15 #define ECORE_DEFAULT_LOG_COLOR EINA_COLOR_BLUE
20 #define ERR(...) EINA_LOG_DOM_ERR(_ECORE_DEFAULT_LOG_DOM, __VA_ARGS__)
25 #define DBG(...) EINA_LOG_DOM_DBG(_ECORE_DEFAULT_LOG_DOM, __VA_ARGS__)
30 #define INF(...) EINA_LOG_DOM_INFO(_ECORE_DEFAULT_LOG_DOM, __VA_ARGS__)
35 #define WRN(...) EINA_LOG_DOM_WARN(_ECORE_DEFAULT_LOG_DOM, __VA_ARGS__)
40 #define CRIT(...) EINA_LOG_DOM_CRIT(_ECORE_DEFAULT_LOG_DOM, __VA_ARGS__)
43 # define PATH_MAX 4096
47 # define MIN(x, y) (((x) > (y)) ? (y) : (x))
51 # define MAX(x, y) (((x) > (y)) ? (x) : (y))
55 # define ABS(x) ((x) < 0 ? -(x) : (x))
59 # define CLAMP(x, min, max) (((x) > (max)) ? (max) : (((x) < (min)) ? (min) : (x)))
62 #define EVAS_FRAME_QUEUING 1 /* for test */
64 #define READBUFSIZ 65536
66 #define ECORE_MAGIC_NONE 0x1234fedc
67 #define ECORE_MAGIC_EXE 0xf7e812f5
68 #define ECORE_MAGIC_TIMER 0xf7d713f4
69 #define ECORE_MAGIC_IDLER 0xf7c614f3
70 #define ECORE_MAGIC_IDLE_ENTERER 0xf7b515f2
71 #define ECORE_MAGIC_IDLE_EXITER 0xf7601afd
72 #define ECORE_MAGIC_FD_HANDLER 0xf7a416f1
73 #define ECORE_MAGIC_EVENT_HANDLER 0xf79317f0
74 #define ECORE_MAGIC_EVENT_FILTER 0xf78218ff
75 #define ECORE_MAGIC_EVENT 0xf77119fe
76 #define ECORE_MAGIC_ANIMATOR 0xf7643ea5
77 #define ECORE_MAGIC_POLLER 0xf7568127
78 #define ECORE_MAGIC_PIPE 0xf7458226
79 #define ECORE_MAGIC_WIN32_HANDLER 0xf7e8f1a3
80 #define ECORE_MAGIC_JOB 0x76543210
82 typedef unsigned int Ecore_Magic;
83 #define ECORE_MAGIC Ecore_Magic __magic
85 #define ECORE_MAGIC_SET(d, m) (d)->__magic = (m)
86 #define ECORE_MAGIC_CHECK(d, m) ((d) && ((d)->__magic == (m)))
87 #define ECORE_MAGIC_FAIL(d, m, fn) _ecore_magic_fail((d), (d) ? (d)->__magic : 0, (m), (fn));
89 /* undef the following, we want our version */
91 #define FREE(ptr) free(ptr); ptr = NULL;
94 #define IF_FREE(ptr) if (ptr) free(ptr); ptr = NULL;
97 #define IF_FN_DEL(_fn, ptr) if (ptr) { _fn(ptr); ptr = NULL; }
100 ecore_print_warning(const char *function,
103 /* convenience macros for checking pointer parameters for non-NULL */
104 #undef CHECK_PARAM_POINTER_RETURN
105 #define CHECK_PARAM_POINTER_RETURN(sparam, param, ret) \
108 ecore_print_warning(__FUNCTION__, sparam); \
112 #undef CHECK_PARAM_POINTER
113 #define CHECK_PARAM_POINTER(sparam, param) \
116 ecore_print_warning(__FUNCTION__, sparam); \
120 EAPI void _ecore_magic_fail(const void *d,
125 void _ecore_time_init(void);
127 Ecore_Timer *_ecore_timer_loop_add(double in,
130 void *_ecore_timer_del(Ecore_Timer *timer);
131 void _ecore_timer_delay(Ecore_Timer *timer,
133 void _ecore_timer_shutdown(void);
134 void _ecore_timer_cleanup(void);
135 void _ecore_timer_enable_new(void);
136 double _ecore_timer_next_get(void);
137 void _ecore_timer_expired_timers_call(double when);
138 int _ecore_timers_exists(void);
140 int _ecore_timer_expired_call(double when);
142 void _ecore_idler_shutdown(void);
143 int _ecore_idler_all_call(void);
144 int _ecore_idler_exist(void);
146 void _ecore_idle_enterer_shutdown(void);
147 void _ecore_idle_enterer_call(void);
148 int _ecore_idle_enterer_exist(void);
150 void _ecore_idle_exiter_shutdown(void);
151 void _ecore_idle_exiter_call(void);
152 int _ecore_idle_exiter_exist(void);
154 void _ecore_event_shutdown(void);
155 int _ecore_event_exist(void);
156 Ecore_Event *_ecore_event_add(int type,
158 Ecore_End_Cb func_free,
160 void _ecore_event_call(void);
161 void *_ecore_event_handler_del(Ecore_Event_Handler *event_handler);
163 Ecore_Timer *_ecore_exe_doomsday_clock_get(Ecore_Exe *exe);
164 void _ecore_exe_doomsday_clock_set(Ecore_Exe *exe,
167 void *_ecore_event_signal_user_new(void);
168 void *_ecore_event_signal_hup_new(void);
169 void *_ecore_event_signal_exit_new(void);
170 void *_ecore_event_signal_power_new(void);
171 void *_ecore_event_signal_realtime_new(void);
173 void *_ecore_main_fd_handler_del(Ecore_Fd_Handler *fd_handler);
175 void _ecore_main_shutdown(void);
177 #if defined (_WIN32) || defined (__lv2ppu__) || defined (HAVE_EXOTIC)
178 static inline void _ecore_signal_shutdown(void) { }
180 static inline void _ecore_signal_init(void) { }
182 static inline void _ecore_signal_received_process(void) { }
184 static inline int _ecore_signal_count_get(void) { return 0; }
186 static inline void _ecore_signal_call(void) { }
189 void _ecore_signal_shutdown(void);
190 void _ecore_signal_init(void);
191 void _ecore_signal_received_process(void);
192 int _ecore_signal_count_get(void);
193 void _ecore_signal_call(void);
196 void _ecore_exe_init(void);
197 void _ecore_exe_shutdown(void);
199 Ecore_Exe *_ecore_exe_find(pid_t pid);
200 void *_ecore_exe_event_del_new(void);
201 void _ecore_exe_event_del_free(void *data,
205 void _ecore_animator_shutdown(void);
207 void _ecore_poller_shutdown(void);
209 void _ecore_fps_debug_init(void);
210 void _ecore_fps_debug_shutdown(void);
211 void _ecore_fps_debug_runtime_add(double t);
213 void _ecore_thread_init(void);
214 void _ecore_thread_shutdown(void);
216 void _ecore_glib_init(void);
217 void _ecore_glib_shutdown(void);
219 void _ecore_job_init(void);
220 void _ecore_job_shutdown(void);
222 void _ecore_main_loop_init(void);
223 void _ecore_main_loop_shutdown(void);
225 void _ecore_throttle(void);
227 extern int _ecore_main_lock_count;
228 extern Eina_Lock _ecore_main_loop_lock;
233 #ifdef HAVE_THREAD_SAFETY
234 eina_lock_take(&_ecore_main_loop_lock);
236 /* at least check we're not being called from a thread */
237 EINA_MAIN_LOOP_CHECK_RETURN;
239 _ecore_main_lock_count++;
240 /* assert(_ecore_main_lock_count == 1); */
246 _ecore_main_lock_count--;
247 /* assert(_ecore_main_lock_count == 0); */
248 #ifdef HAVE_THREAD_SAFETY
249 eina_lock_release(&_ecore_main_loop_lock);
254 * Callback wrappers all assume that ecore _ecore_lock has been called
256 static inline Eina_Bool
257 _ecore_call_task_cb(Ecore_Task_Cb func,
270 _ecore_call_data_cb(Ecore_Data_Cb func,
283 _ecore_call_end_cb(Ecore_End_Cb func,
288 func(user_data, func_data);
292 static inline Eina_Bool
293 _ecore_call_filter_cb(Ecore_Filter_Cb func,
302 r = func(data, loop_data, type, event);
308 static inline Eina_Bool
309 _ecore_call_handler_cb(Ecore_Event_Handler_Cb func,
317 r = func(data, type, event);
324 _ecore_call_prep_cb(Ecore_Fd_Prep_Cb func,
326 Ecore_Fd_Handler *fd_handler)
329 func(data, fd_handler);
333 static inline Eina_Bool
334 _ecore_call_fd_cb(Ecore_Fd_Cb func,
336 Ecore_Fd_Handler *fd_handler)
341 r = func(data, fd_handler);
347 extern int _ecore_fps_debug;
348 extern double _ecore_time_loop_time;
349 extern Eina_Bool _ecore_glib_always_integrate;
350 extern Ecore_Select_Function main_loop_select;
352 Eina_Bool ecore_mempool_init(void);
353 void ecore_mempool_shutdown(void);
354 #define GENERIC_ALLOC_FREE_HEADER(TYPE, Type) \
355 TYPE *Type##_calloc(unsigned int); \
356 void Type##_mp_free(TYPE *e);
357 #define GENERIC_ALLOC_SIZE_DECLARE(TYPE) \
358 size_t _ecore_sizeof_##TYPE = sizeof (TYPE);
360 GENERIC_ALLOC_FREE_HEADER(Ecore_Animator, ecore_animator);
361 GENERIC_ALLOC_FREE_HEADER(Ecore_Event_Handler, ecore_event_handler);
362 GENERIC_ALLOC_FREE_HEADER(Ecore_Event_Filter, ecore_event_filter);
363 GENERIC_ALLOC_FREE_HEADER(Ecore_Event, ecore_event);
364 GENERIC_ALLOC_FREE_HEADER(Ecore_Idle_Exiter, ecore_idle_exiter);
365 GENERIC_ALLOC_FREE_HEADER(Ecore_Idle_Enterer, ecore_idle_enterer);
366 GENERIC_ALLOC_FREE_HEADER(Ecore_Idler, ecore_idler);
367 GENERIC_ALLOC_FREE_HEADER(Ecore_Job, ecore_job);
368 GENERIC_ALLOC_FREE_HEADER(Ecore_Timer, ecore_timer);
369 GENERIC_ALLOC_FREE_HEADER(Ecore_Poller, ecore_poller);
370 GENERIC_ALLOC_FREE_HEADER(Ecore_Pipe, ecore_pipe);
371 GENERIC_ALLOC_FREE_HEADER(Ecore_Fd_Handler, ecore_fd_handler);
373 GENERIC_ALLOC_FREE_HEADER(Ecore_Win32_Handler, ecore_win32_handler);
376 #undef GENERIC_ALLOC_FREE_HEADER