From: mike_m Date: Sun, 11 Dec 2011 08:29:35 +0000 (+0000) Subject: ecore: Fix modularity X-Git-Tag: build/2012-07-04.173327~581 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b5423624faf6fd18cf690ab3a9679540d396ea71;p=profile%2Fivi%2Fecore.git ecore: Fix modularity This also fixes the glib build. Signed-off-by: Mike McCormack git-svn-id: http://svn.enlightenment.org/svn/e/trunk/ecore@66091 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- diff --git a/src/lib/ecore/ecore_alloc.c b/src/lib/ecore/ecore_alloc.c index ded62c2..412c383 100644 --- a/src/lib/ecore/ecore_alloc.c +++ b/src/lib/ecore/ecore_alloc.c @@ -18,11 +18,13 @@ struct _Ecore_Mempool }; #define GENERIC_ALLOC_FREE(TYPE, Type) \ - Ecore_Mempool Type##_mp = { #TYPE, NULL, sizeof (TYPE) }; \ + extern size_t _ecore_sizeof_##TYPE; \ + Ecore_Mempool Type##_mp = { #TYPE, NULL, 0 }; \ TYPE * \ Type##_calloc(unsigned int num) \ { \ - return eina_mempool_calloc(Type##_mp.mp, num * sizeof (TYPE)); \ + return eina_mempool_calloc(Type##_mp.mp, \ + num * _ecore_sizeof_##TYPE); \ } \ void \ Type##_mp_free(TYPE *e) \ @@ -70,6 +72,26 @@ ecore_mempool_init(void) const char *choice; unsigned int i; +#define MP_SIZE_INIT(TYPE, Type) \ + Type##_mp.size = _ecore_sizeof_##TYPE + + MP_SIZE_INIT(Ecore_Animator, ecore_animator); + MP_SIZE_INIT(Ecore_Event_Handler, ecore_event_handler); + MP_SIZE_INIT(Ecore_Event_Filter, ecore_event_filter); + MP_SIZE_INIT(Ecore_Event, ecore_event); + MP_SIZE_INIT(Ecore_Idle_Exiter, ecore_idle_exiter); + MP_SIZE_INIT(Ecore_Idle_Enterer, ecore_idle_enterer); + MP_SIZE_INIT(Ecore_Idler, ecore_idler); + MP_SIZE_INIT(Ecore_Job, ecore_job); + MP_SIZE_INIT(Ecore_Timer, ecore_timer); + MP_SIZE_INIT(Ecore_Poller, ecore_poller); + MP_SIZE_INIT(Ecore_Pipe, ecore_pipe); + MP_SIZE_INIT(Ecore_Fd_Handler, ecore_fd_handler); +#ifdef _WIN32 + MP_SIZE_INIT(Ecore_Win32_Handler, ecore_win32_handler); +#endif +#undef MP_SIZE_INIT + choice = getenv("EINA_MEMPOOL"); if ((!choice) || (!choice[0])) choice = "chained_mempool"; diff --git a/src/lib/ecore/ecore_anim.c b/src/lib/ecore/ecore_anim.c index c9199a4..8c5d48d 100644 --- a/src/lib/ecore/ecore_anim.c +++ b/src/lib/ecore/ecore_anim.c @@ -8,6 +8,24 @@ #include "Ecore.h" #include "ecore_private.h" +struct _Ecore_Animator +{ + EINA_INLIST; + ECORE_MAGIC; + + Ecore_Task_Cb func; + void *data; + + double start, run; + Ecore_Timeline_Cb run_func; + void *run_data; + + Eina_Bool delete_me : 1; + Eina_Bool suspended : 1; +}; + +GENERIC_ALLOC_SIZE_DECLARE(Ecore_Animator); + static Eina_Bool _ecore_animator_run(void *data); static Eina_Bool _ecore_animator(void *data); diff --git a/src/lib/ecore/ecore_events.c b/src/lib/ecore/ecore_events.c index 722f60f..0550224 100644 --- a/src/lib/ecore/ecore_events.c +++ b/src/lib/ecore/ecore_events.c @@ -9,6 +9,45 @@ static int inpurge = 0; +struct _Ecore_Event_Handler +{ + EINA_INLIST; + ECORE_MAGIC; + int type; + Ecore_Event_Handler_Cb func; + void *data; + int references; + Eina_Bool delete_me : 1; +}; +GENERIC_ALLOC_SIZE_DECLARE(Ecore_Event_Handler); + +struct _Ecore_Event_Filter +{ + EINA_INLIST; + ECORE_MAGIC; + Ecore_Data_Cb func_start; + Ecore_Filter_Cb func_filter; + Ecore_End_Cb func_end; + void *loop_data; + void *data; + int references; + Eina_Bool delete_me : 1; +}; +GENERIC_ALLOC_SIZE_DECLARE(Ecore_Event_Filter); + +struct _Ecore_Event +{ + EINA_INLIST; + ECORE_MAGIC; + int type; + void *event; + Ecore_End_Cb func_free; + void *data; + int references; + Eina_Bool delete_me : 1; +}; +GENERIC_ALLOC_SIZE_DECLARE(Ecore_Event); + static int events_num = 0; static Ecore_Event *events = NULL; static Ecore_Event *event_current = NULL; diff --git a/src/lib/ecore/ecore_idle_enterer.c b/src/lib/ecore/ecore_idle_enterer.c index 580f34f..8e4ae50 100644 --- a/src/lib/ecore/ecore_idle_enterer.c +++ b/src/lib/ecore/ecore_idle_enterer.c @@ -7,6 +7,17 @@ #include "Ecore.h" #include "ecore_private.h" +struct _Ecore_Idle_Enterer +{ + EINA_INLIST; + ECORE_MAGIC; + Ecore_Task_Cb func; + void *data; + int references; + Eina_Bool delete_me : 1; +}; +GENERIC_ALLOC_SIZE_DECLARE(Ecore_Idle_Enterer); + static Ecore_Idle_Enterer *idle_enterers = NULL; static Ecore_Idle_Enterer *idle_enterer_current = NULL; static int idle_enterers_delete_me = 0; diff --git a/src/lib/ecore/ecore_idle_exiter.c b/src/lib/ecore/ecore_idle_exiter.c index 7cb2851..4e454e2 100644 --- a/src/lib/ecore/ecore_idle_exiter.c +++ b/src/lib/ecore/ecore_idle_exiter.c @@ -7,6 +7,17 @@ #include "Ecore.h" #include "ecore_private.h" +struct _Ecore_Idle_Exiter +{ + EINA_INLIST; + ECORE_MAGIC; + Ecore_Task_Cb func; + void *data; + int references; + Eina_Bool delete_me : 1; +}; +GENERIC_ALLOC_SIZE_DECLARE(Ecore_Idle_Exiter); + static Ecore_Idle_Exiter *idle_exiters = NULL; static Ecore_Idle_Exiter *idle_exiter_current = NULL; static int idle_exiters_delete_me = 0; diff --git a/src/lib/ecore/ecore_idler.c b/src/lib/ecore/ecore_idler.c index 1c03e42..5114654 100644 --- a/src/lib/ecore/ecore_idler.c +++ b/src/lib/ecore/ecore_idler.c @@ -7,6 +7,17 @@ #include "Ecore.h" #include "ecore_private.h" +struct _Ecore_Idler +{ + EINA_INLIST; + ECORE_MAGIC; + Ecore_Task_Cb func; + void *data; + int references; + Eina_Bool delete_me : 1; +}; +GENERIC_ALLOC_SIZE_DECLARE(Ecore_Idler); + static Ecore_Idler *idlers = NULL; static Ecore_Idler *idler_current = NULL; static int idlers_delete_me = 0; diff --git a/src/lib/ecore/ecore_job.c b/src/lib/ecore/ecore_job.c index 02246f9..ac27c7a 100644 --- a/src/lib/ecore/ecore_job.c +++ b/src/lib/ecore/ecore_job.c @@ -16,6 +16,15 @@ static void _ecore_job_event_free(void *data, static int ecore_event_job_type = 0; static Ecore_Event_Handler *_ecore_job_handler = NULL; +struct _Ecore_Job +{ + ECORE_MAGIC; + Ecore_Event *event; + Ecore_Cb func; + void *data; +}; +GENERIC_ALLOC_SIZE_DECLARE(Ecore_Job); + void _ecore_job_init(void) { diff --git a/src/lib/ecore/ecore_main.c b/src/lib/ecore/ecore_main.c index 23e670c..76aced6 100644 --- a/src/lib/ecore/ecore_main.c +++ b/src/lib/ecore/ecore_main.c @@ -145,6 +145,44 @@ timerfd_settime(int fd __UNUSED__, #define NS_PER_SEC (1000.0 * 1000.0 * 1000.0) +struct _Ecore_Fd_Handler +{ + EINA_INLIST; + ECORE_MAGIC; + Ecore_Fd_Handler *next_ready; + int fd; + Ecore_Fd_Handler_Flags flags; + Ecore_Fd_Cb func; + void *data; + Ecore_Fd_Cb buf_func; + void *buf_data; + Ecore_Fd_Prep_Cb prep_func; + void *prep_data; + int references; + Eina_Bool read_active : 1; + Eina_Bool write_active : 1; + Eina_Bool error_active : 1; + Eina_Bool delete_me : 1; +#if defined(USE_G_MAIN_LOOP) + GPollFD gfd; +#endif +}; +GENERIC_ALLOC_SIZE_DECLARE(Ecore_Fd_Handler); + +#ifdef _WIN32 +struct _Ecore_Win32_Handler +{ + EINA_INLIST; + ECORE_MAGIC; + HANDLE h; + Ecore_Win32_Handle_Cb func; + void *data; + int references; + Eina_Bool delete_me : 1; +}; +GENERIC_ALLOC_SIZE_DECLARE(Ecore_Win32_Handler); +#endif + #ifndef USE_G_MAIN_LOOP static int _ecore_main_select(double timeout); #endif diff --git a/src/lib/ecore/ecore_pipe.c b/src/lib/ecore/ecore_pipe.c index d771471..179455a 100644 --- a/src/lib/ecore/ecore_pipe.c +++ b/src/lib/ecore/ecore_pipe.c @@ -80,6 +80,22 @@ #endif /* ! _WIN32 */ +struct _Ecore_Pipe +{ + ECORE_MAGIC; + int fd_read; + int fd_write; + Ecore_Fd_Handler *fd_handler; + const void *data; + Ecore_Pipe_Cb handler; + unsigned int len; + int handling; + size_t already_read; + void *passed_data; + int message; + Eina_Bool delete_me : 1; +}; +GENERIC_ALLOC_SIZE_DECLARE(Ecore_Pipe); static Eina_Bool _ecore_pipe_read(void *data, Ecore_Fd_Handler *fd_handler); diff --git a/src/lib/ecore/ecore_poll.c b/src/lib/ecore/ecore_poll.c index f3c850a..b6c1b6b 100644 --- a/src/lib/ecore/ecore_poll.c +++ b/src/lib/ecore/ecore_poll.c @@ -7,6 +7,17 @@ #include "Ecore.h" #include "ecore_private.h" +struct _Ecore_Poller +{ + EINA_INLIST; + ECORE_MAGIC; + int ibit; + unsigned char delete_me : 1; + Ecore_Task_Cb func; + void *data; +}; +GENERIC_ALLOC_SIZE_DECLARE(Ecore_Poller); + static Ecore_Timer *timer = NULL; static int min_interval = -1; static int interval_incr = 0; diff --git a/src/lib/ecore/ecore_private.h b/src/lib/ecore/ecore_private.h index 61cda07..50d502c 100644 --- a/src/lib/ecore/ecore_private.h +++ b/src/lib/ecore/ecore_private.h @@ -86,8 +86,6 @@ typedef unsigned int Ecore_Magic; #define ECORE_MAGIC_CHECK(d, m) ((d) && ((d)->__magic == (m))) #define ECORE_MAGIC_FAIL(d, m, fn) _ecore_magic_fail((d), (d) ? (d)->__magic : 0, (m), (fn)); -#include "ecore_types.h" - /* undef the following, we want our version */ #undef FREE #define FREE(ptr) free(ptr); ptr = NULL; @@ -356,6 +354,8 @@ void ecore_mempool_shutdown(void); #define GENERIC_ALLOC_FREE_HEADER(TYPE, Type) \ TYPE *Type##_calloc(unsigned int); \ void Type##_mp_free(TYPE *e); +#define GENERIC_ALLOC_SIZE_DECLARE(TYPE) \ + size_t _ecore_sizeof_##TYPE = sizeof (TYPE); GENERIC_ALLOC_FREE_HEADER(Ecore_Animator, ecore_animator); GENERIC_ALLOC_FREE_HEADER(Ecore_Event_Handler, ecore_event_handler); diff --git a/src/lib/ecore/ecore_timer.c b/src/lib/ecore/ecore_timer.c index 19eb466..cc19e3f 100644 --- a/src/lib/ecore/ecore_timer.c +++ b/src/lib/ecore/ecore_timer.c @@ -8,6 +8,35 @@ #include "Ecore.h" #include "ecore_private.h" +#ifdef WANT_ECORE_TIMER_DUMP +# include +# include +# define ECORE_TIMER_DEBUG_BT_NUM 64 +typedef void (*Ecore_Timer_Bt_Func)(); +#endif + +struct _Ecore_Timer +{ + EINA_INLIST; + ECORE_MAGIC; + double in; + double at; + double pending; + Ecore_Task_Cb func; + void *data; + +#ifdef WANT_ECORE_TIMER_DUMP + Ecore_Timer_Bt_Func timer_bt[ECORE_TIMER_DEBUG_BT_NUM]; + int timer_bt_num; +#endif + + int references; + unsigned char delete_me : 1; + unsigned char just_added : 1; + unsigned char frozen : 1; +}; +GENERIC_ALLOC_SIZE_DECLARE(Ecore_Timer); + static void _ecore_timer_set(Ecore_Timer *timer, double at, double in, diff --git a/src/lib/ecore/ecore_types.h b/src/lib/ecore/ecore_types.h deleted file mode 100644 index 3fc7c39..0000000 --- a/src/lib/ecore/ecore_types.h +++ /dev/null @@ -1,184 +0,0 @@ -#ifndef ECORE_TYPES_H -#define ECORE_TYPES_H - -#ifdef WANT_ECORE_TIMER_DUMP -# include -# include -# define ECORE_TIMER_DEBUG_BT_NUM 64 -typedef void (*Ecore_Timer_Bt_Func)(); -#endif - -struct _Ecore_Animator -{ - EINA_INLIST; - ECORE_MAGIC; - - Ecore_Task_Cb func; - void *data; - - double start, run; - Ecore_Timeline_Cb run_func; - void *run_data; - - Eina_Bool delete_me : 1; - Eina_Bool suspended : 1; -}; - -struct _Ecore_Event_Handler -{ - EINA_INLIST; - ECORE_MAGIC; - int type; - Ecore_Event_Handler_Cb func; - void *data; - int references; - Eina_Bool delete_me : 1; -}; - -struct _Ecore_Event_Filter -{ - EINA_INLIST; - ECORE_MAGIC; - Ecore_Data_Cb func_start; - Ecore_Filter_Cb func_filter; - Ecore_End_Cb func_end; - void *loop_data; - void *data; - int references; - Eina_Bool delete_me : 1; -}; - -struct _Ecore_Event -{ - EINA_INLIST; - ECORE_MAGIC; - int type; - void *event; - Ecore_End_Cb func_free; - void *data; - int references; - Eina_Bool delete_me : 1; -}; - -struct _Ecore_Idle_Enterer -{ - EINA_INLIST; - ECORE_MAGIC; - Ecore_Task_Cb func; - void *data; - int references; - Eina_Bool delete_me : 1; -}; - -struct _Ecore_Idle_Exiter -{ - EINA_INLIST; - ECORE_MAGIC; - Ecore_Task_Cb func; - void *data; - int references; - Eina_Bool delete_me : 1; -}; - -struct _Ecore_Idler -{ - EINA_INLIST; - ECORE_MAGIC; - Ecore_Task_Cb func; - void *data; - int references; - Eina_Bool delete_me : 1; -}; - -struct _Ecore_Job -{ - ECORE_MAGIC; - Ecore_Event *event; - Ecore_Cb func; - void *data; -}; - -struct _Ecore_Fd_Handler -{ - EINA_INLIST; - ECORE_MAGIC; - Ecore_Fd_Handler *next_ready; - int fd; - Ecore_Fd_Handler_Flags flags; - Ecore_Fd_Cb func; - void *data; - Ecore_Fd_Cb buf_func; - void *buf_data; - Ecore_Fd_Prep_Cb prep_func; - void *prep_data; - int references; - Eina_Bool read_active : 1; - Eina_Bool write_active : 1; - Eina_Bool error_active : 1; - Eina_Bool delete_me : 1; -#if defined(USE_G_MAIN_LOOP) - GPollFD gfd; -#endif -}; - -#ifdef _WIN32 -struct _Ecore_Win32_Handler -{ - EINA_INLIST; - ECORE_MAGIC; - HANDLE h; - Ecore_Win32_Handle_Cb func; - void *data; - int references; - Eina_Bool delete_me : 1; -}; -#endif - -struct _Ecore_Pipe -{ - ECORE_MAGIC; - int fd_read; - int fd_write; - Ecore_Fd_Handler *fd_handler; - const void *data; - Ecore_Pipe_Cb handler; - unsigned int len; - int handling; - size_t already_read; - void *passed_data; - int message; - Eina_Bool delete_me : 1; -}; - -struct _Ecore_Poller -{ - EINA_INLIST; - ECORE_MAGIC; - int ibit; - unsigned char delete_me : 1; - Ecore_Task_Cb func; - void *data; -}; - -struct _Ecore_Timer -{ - EINA_INLIST; - ECORE_MAGIC; - double in; - double at; - double pending; - Ecore_Task_Cb func; - void *data; - -#ifdef WANT_ECORE_TIMER_DUMP - Ecore_Timer_Bt_Func timer_bt[ECORE_TIMER_DEBUG_BT_NUM]; - int timer_bt_num; -#endif - - int references; - unsigned char delete_me : 1; - unsigned char just_added : 1; - unsigned char frozen : 1; -}; - -#endif