From 62fbf8991704d778bec8a3a4cedb396c10073ada Mon Sep 17 00:00:00 2001 From: mike_m Date: Tue, 5 Jul 2011 11:13:29 +0000 Subject: [PATCH] ecore: Add basic thread checks Signed-off-by: Mike McCormack git-svn-id: http://svn.enlightenment.org/svn/e/trunk/ecore@61041 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/lib/ecore/ecore_anim.c | 22 ++++++++++++++++++++++ src/lib/ecore/ecore_app.c | 4 ++++ src/lib/ecore/ecore_events.c | 19 +++++++++++++++++++ src/lib/ecore/ecore_idle_enterer.c | 6 ++++++ src/lib/ecore/ecore_idle_exiter.c | 4 ++++ src/lib/ecore/ecore_main.c | 14 +++++++++++++- src/lib/ecore/ecore_timer.c | 20 ++++++++++++++++++++ 7 files changed, 88 insertions(+), 1 deletion(-) diff --git a/src/lib/ecore/ecore_anim.c b/src/lib/ecore/ecore_anim.c index ad953f7..49225bc 100644 --- a/src/lib/ecore/ecore_anim.c +++ b/src/lib/ecore/ecore_anim.c @@ -166,6 +166,8 @@ ecore_animator_add(Ecore_Task_Cb func, const void *data) { Ecore_Animator *animator; + ECORE_MAIN_LOOP_ASSERT(); + if (!func) return NULL; animator = calloc(1, sizeof(Ecore_Animator)); if (!animator) return NULL; @@ -204,6 +206,8 @@ ecore_animator_timeline_add(double runtime, Ecore_Timeline_Cb func, const void * { Ecore_Animator *animator; + ECORE_MAIN_LOOP_ASSERT(); + if (runtime <= 0.0) runtime = 0.0; animator = ecore_animator_add(_ecore_animator_run, NULL); animator->data = animator; @@ -358,6 +362,8 @@ ecore_animator_pos_map(double pos, Ecore_Pos_Map map, double v1, double v2) EAPI void * ecore_animator_del(Ecore_Animator *animator) { + ECORE_MAIN_LOOP_ASSERT(); + if (!ECORE_MAGIC_CHECK(animator, ECORE_MAGIC_ANIMATOR)) { ECORE_MAGIC_FAIL(animator, ECORE_MAGIC_ANIMATOR, @@ -380,6 +386,8 @@ ecore_animator_del(Ecore_Animator *animator) EAPI void ecore_animator_frametime_set(double frametime) { + ECORE_MAIN_LOOP_ASSERT(); + if (frametime < 0.0) frametime = 0.0; if (animators_frametime == frametime) return; animators_frametime = frametime; @@ -409,6 +417,8 @@ ecore_animator_frametime_get(void) EAPI void ecore_animator_freeze(Ecore_Animator *animator) { + ECORE_MAIN_LOOP_ASSERT(); + if (!ECORE_MAGIC_CHECK(animator, ECORE_MAGIC_ANIMATOR)) { ECORE_MAGIC_FAIL(animator, ECORE_MAGIC_ANIMATOR, @@ -429,6 +439,8 @@ ecore_animator_freeze(Ecore_Animator *animator) EAPI void ecore_animator_thaw(Ecore_Animator *animator) { + ECORE_MAIN_LOOP_ASSERT(); + if (!ECORE_MAGIC_CHECK(animator, ECORE_MAGIC_ANIMATOR)) { ECORE_MAGIC_FAIL(animator, ECORE_MAGIC_ANIMATOR, @@ -463,6 +475,8 @@ ecore_animator_thaw(Ecore_Animator *animator) EAPI void ecore_animator_source_set(Ecore_Animator_Source source) { + ECORE_MAIN_LOOP_ASSERT(); + src = source; _end_tick(); if (animators) _begin_tick(); @@ -478,6 +492,8 @@ ecore_animator_source_set(Ecore_Animator_Source source) EAPI Ecore_Animator_Source ecore_animator_source_get(void) { + ECORE_MAIN_LOOP_ASSERT(); + return src; } @@ -499,6 +515,8 @@ ecore_animator_source_get(void) EAPI void ecore_animator_custom_source_tick_begin_callback_set(Ecore_Cb func, const void *data) { + ECORE_MAIN_LOOP_ASSERT(); + begin_tick_cb = func; begin_tick_data = data; _end_tick(); @@ -519,6 +537,8 @@ ecore_animator_custom_source_tick_begin_callback_set(Ecore_Cb func, const void * EAPI void ecore_animator_custom_source_tick_end_callback_set(Ecore_Cb func, const void *data) { + ECORE_MAIN_LOOP_ASSERT(); + end_tick_cb = func; end_tick_data = data; _end_tick(); @@ -537,6 +557,8 @@ ecore_animator_custom_source_tick_end_callback_set(Ecore_Cb func, const void *da EAPI void ecore_animator_custom_tick(void) { + ECORE_MAIN_LOOP_ASSERT(); + if (src == ECORE_ANIMATOR_SOURCE_CUSTOM) _do_tick(); } diff --git a/src/lib/ecore/ecore_app.c b/src/lib/ecore/ecore_app.c index fe47d81..e1c915f 100644 --- a/src/lib/ecore/ecore_app.c +++ b/src/lib/ecore/ecore_app.c @@ -43,6 +43,8 @@ static char **app_argv = NULL; EAPI void ecore_app_args_set(int argc, const char **argv) { + ECORE_MAIN_LOOP_ASSERT(); + if ((argc < 1) || (!argv)) return; app_argc = argc; @@ -63,6 +65,8 @@ ecore_app_args_set(int argc, const char **argv) EAPI void ecore_app_args_get(int *argc, char ***argv) { + ECORE_MAIN_LOOP_ASSERT(); + if (argc) *argc = app_argc; if (argv) *argv = app_argv; } diff --git a/src/lib/ecore/ecore_events.c b/src/lib/ecore/ecore_events.c index 886f008..c1f4658 100644 --- a/src/lib/ecore/ecore_events.c +++ b/src/lib/ecore/ecore_events.c @@ -142,6 +142,8 @@ ecore_event_handler_add(int type, Ecore_Event_Handler_Cb func, const void *data) { Ecore_Event_Handler *eh; + ECORE_MAIN_LOOP_ASSERT(); + if (!func) return NULL; if ((type <= ECORE_EVENT_NONE) || (type >= event_id_max)) return NULL; eh = calloc(1, sizeof(Ecore_Event_Handler)); @@ -193,6 +195,8 @@ ecore_event_handler_add(int type, Ecore_Event_Handler_Cb func, const void *data) EAPI void * ecore_event_handler_del(Ecore_Event_Handler *event_handler) { + ECORE_MAIN_LOOP_ASSERT(); + if (!ECORE_MAGIC_CHECK(event_handler, ECORE_MAGIC_EVENT_HANDLER)) { ECORE_MAGIC_FAIL(event_handler, ECORE_MAGIC_EVENT_HANDLER, @@ -216,6 +220,8 @@ ecore_event_handler_del(Ecore_Event_Handler *event_handler) EAPI void * ecore_event_handler_data_get(Ecore_Event_Handler *eh) { + ECORE_MAIN_LOOP_ASSERT(); + if (!ECORE_MAGIC_CHECK(eh, ECORE_MAGIC_EVENT_HANDLER)) { ECORE_MAGIC_FAIL(eh, ECORE_MAGIC_EVENT_HANDLER, "ecore_event_handler_data_get"); @@ -237,6 +243,9 @@ EAPI void * ecore_event_handler_data_set(Ecore_Event_Handler *eh, const void *data) { void *old; + + ECORE_MAIN_LOOP_ASSERT(); + if (!ECORE_MAGIC_CHECK(eh, ECORE_MAGIC_EVENT_HANDLER)) { ECORE_MAGIC_FAIL(eh, ECORE_MAGIC_EVENT_HANDLER, "ecore_event_handler_data_set"); @@ -274,6 +283,8 @@ _ecore_event_generic_free (void *data __UNUSED__, void *event) EAPI Ecore_Event * ecore_event_add(int type, void *ev, Ecore_End_Cb func_free, void *data) { + ECORE_MAIN_LOOP_ASSERT(); + /* if (!ev) return NULL;*/ if (type <= ECORE_EVENT_NONE) return NULL; if (type >= event_id_max) return NULL; @@ -295,6 +306,8 @@ ecore_event_add(int type, void *ev, Ecore_End_Cb func_free, void *data) EAPI void * ecore_event_del(Ecore_Event *event) { + ECORE_MAIN_LOOP_ASSERT(); + if (!ECORE_MAGIC_CHECK(event, ECORE_MAGIC_EVENT)) { ECORE_MAGIC_FAIL(event, ECORE_MAGIC_EVENT, "ecore_event_del"); @@ -318,6 +331,8 @@ ecore_event_del(Ecore_Event *event) EAPI int ecore_event_type_new(void) { + ECORE_MAIN_LOOP_ASSERT(); + event_id_max++; return event_id_max - 1; } @@ -347,6 +362,8 @@ ecore_event_filter_add(Ecore_Data_Cb func_start, Ecore_Filter_Cb func_filter, Ec { Ecore_Event_Filter *ef; + ECORE_MAIN_LOOP_ASSERT(); + if (!func_filter) return NULL; ef = calloc(1, sizeof(Ecore_Event_Filter)); if (!ef) return NULL; @@ -371,6 +388,8 @@ ecore_event_filter_add(Ecore_Data_Cb func_start, Ecore_Filter_Cb func_filter, Ec EAPI void * ecore_event_filter_del(Ecore_Event_Filter *ef) { + ECORE_MAIN_LOOP_ASSERT(); + if (!ECORE_MAGIC_CHECK(ef, ECORE_MAGIC_EVENT_FILTER)) { ECORE_MAGIC_FAIL(ef, ECORE_MAGIC_EVENT_FILTER, "ecore_event_filter_del"); diff --git a/src/lib/ecore/ecore_idle_enterer.c b/src/lib/ecore/ecore_idle_enterer.c index a9ae80d..9802895 100644 --- a/src/lib/ecore/ecore_idle_enterer.c +++ b/src/lib/ecore/ecore_idle_enterer.c @@ -50,6 +50,8 @@ ecore_idle_enterer_add(Ecore_Task_Cb func, const void *data) { Ecore_Idle_Enterer *ie; + ECORE_MAIN_LOOP_ASSERT(); + if (!func) return NULL; ie = calloc(1, sizeof(Ecore_Idle_Enterer)); if (!ie) return NULL; @@ -75,6 +77,8 @@ ecore_idle_enterer_before_add(Ecore_Task_Cb func, const void *data) { Ecore_Idle_Enterer *ie; + ECORE_MAIN_LOOP_ASSERT(); + if (!func) return NULL; ie = calloc(1, sizeof(Ecore_Idle_Enterer)); if (!ie) return NULL; @@ -94,6 +98,8 @@ ecore_idle_enterer_before_add(Ecore_Task_Cb func, const void *data) EAPI void * ecore_idle_enterer_del(Ecore_Idle_Enterer *idle_enterer) { + ECORE_MAIN_LOOP_ASSERT(); + if (!ECORE_MAGIC_CHECK(idle_enterer, ECORE_MAGIC_IDLE_ENTERER)) { ECORE_MAGIC_FAIL(idle_enterer, ECORE_MAGIC_IDLE_ENTERER, diff --git a/src/lib/ecore/ecore_idle_exiter.c b/src/lib/ecore/ecore_idle_exiter.c index bbe969a..c8abb87 100644 --- a/src/lib/ecore/ecore_idle_exiter.c +++ b/src/lib/ecore/ecore_idle_exiter.c @@ -49,6 +49,8 @@ ecore_idle_exiter_add(Ecore_Task_Cb func, const void *data) { Ecore_Idle_Exiter *ie; + ECORE_MAIN_LOOP_ASSERT(); + if (!func) return NULL; ie = calloc(1, sizeof(Ecore_Idle_Exiter)); if (!ie) return NULL; @@ -68,6 +70,8 @@ ecore_idle_exiter_add(Ecore_Task_Cb func, const void *data) EAPI void * ecore_idle_exiter_del(Ecore_Idle_Exiter *idle_exiter) { + ECORE_MAIN_LOOP_ASSERT(); + if (!ECORE_MAGIC_CHECK(idle_exiter, ECORE_MAGIC_IDLE_EXITER)) { ECORE_MAGIC_FAIL(idle_exiter, ECORE_MAGIC_IDLE_EXITER, diff --git a/src/lib/ecore/ecore_main.c b/src/lib/ecore/ecore_main.c index a8ee174..e739398 100644 --- a/src/lib/ecore/ecore_main.c +++ b/src/lib/ecore/ecore_main.c @@ -674,10 +674,11 @@ _ecore_main_loop_shutdown(void) EAPI void ecore_main_loop_iterate(void) { + ECORE_MAIN_LOOP_ASSERT(); #ifndef USE_G_MAIN_LOOP _ecore_main_loop_iterate_internal(1); #else - g_main_context_iteration(NULL, 1); + g_main_context_iteration(NULL, 1); #endif } @@ -702,6 +703,7 @@ ecore_main_loop_iterate(void) EAPI void ecore_main_loop_begin(void) { + ECORE_MAIN_LOOP_ASSERT(); #ifndef USE_G_MAIN_LOOP in_main_loop++; while (do_quit == 0) _ecore_main_loop_iterate_internal(0); @@ -820,6 +822,8 @@ ecore_main_fd_handler_add(int fd, Ecore_Fd_Handler_Flags flags, Ecore_Fd_Cb func { Ecore_Fd_Handler *fdh; + ECORE_MAIN_LOOP_ASSERT(); + if ((fd < 0) || (flags == 0) || (!func)) return NULL; fdh = calloc(1, sizeof(Ecore_Fd_Handler)); @@ -895,6 +899,8 @@ ecore_main_win32_handler_add(void *h __UNUSED__, Ecore_Win32_Handle_Cb func __UN EAPI void * ecore_main_fd_handler_del(Ecore_Fd_Handler *fd_handler) { + ECORE_MAIN_LOOP_ASSERT(); + if (!ECORE_MAGIC_CHECK(fd_handler, ECORE_MAGIC_FD_HANDLER)) { ECORE_MAGIC_FAIL(fd_handler, ECORE_MAGIC_FD_HANDLER, @@ -960,6 +966,8 @@ ecore_main_win32_handler_del(Ecore_Win32_Handler *win32_handler __UNUSED__) EAPI void ecore_main_fd_handler_prepare_callback_set(Ecore_Fd_Handler *fd_handler, Ecore_Fd_Prep_Cb func, const void *data) { + ECORE_MAIN_LOOP_ASSERT(); + if (!ECORE_MAGIC_CHECK(fd_handler, ECORE_MAGIC_FD_HANDLER)) { ECORE_MAGIC_FAIL(fd_handler, ECORE_MAGIC_FD_HANDLER, @@ -1006,6 +1014,8 @@ ecore_main_fd_handler_active_get(Ecore_Fd_Handler *fd_handler, Ecore_Fd_Handler_ { int ret = EINA_FALSE; + ECORE_MAIN_LOOP_ASSERT(); + if (!ECORE_MAGIC_CHECK(fd_handler, ECORE_MAGIC_FD_HANDLER)) { ECORE_MAGIC_FAIL(fd_handler, ECORE_MAGIC_FD_HANDLER, @@ -1029,6 +1039,8 @@ ecore_main_fd_handler_active_set(Ecore_Fd_Handler *fd_handler, Ecore_Fd_Handler_ { int ret; + ECORE_MAIN_LOOP_ASSERT(); + if (!ECORE_MAGIC_CHECK(fd_handler, ECORE_MAGIC_FD_HANDLER)) { ECORE_MAGIC_FAIL(fd_handler, ECORE_MAGIC_FD_HANDLER, diff --git a/src/lib/ecore/ecore_timer.c b/src/lib/ecore/ecore_timer.c index fd4997c..2c4a223 100644 --- a/src/lib/ecore/ecore_timer.c +++ b/src/lib/ecore/ecore_timer.c @@ -107,6 +107,8 @@ ecore_timer_precision_get(void) EAPI void ecore_timer_precision_set(double value) { + ECORE_MAIN_LOOP_ASSERT(); + if (value < 0.0) { ERR("Precision %f less than zero, ignored", value); @@ -139,6 +141,8 @@ ecore_timer_add(double in, Ecore_Task_Cb func, const void *data) double now; Ecore_Timer *timer; + ECORE_MAIN_LOOP_ASSERT(); + if (!func) return NULL; if (in < 0.0) in = 0.0; timer = calloc(1, sizeof(Ecore_Timer)); @@ -173,6 +177,8 @@ ecore_timer_loop_add(double in, Ecore_Task_Cb func, const void *data) double now; Ecore_Timer *timer; + ECORE_MAIN_LOOP_ASSERT(); + if (!func) return NULL; if (in < 0.0) in = 0.0; timer = calloc(1, sizeof(Ecore_Timer)); @@ -201,6 +207,8 @@ ecore_timer_loop_add(double in, Ecore_Task_Cb func, const void *data) EAPI void * ecore_timer_del(Ecore_Timer *timer) { + ECORE_MAIN_LOOP_ASSERT(); + if (!ECORE_MAGIC_CHECK(timer, ECORE_MAGIC_TIMER)) { ECORE_MAGIC_FAIL(timer, ECORE_MAGIC_TIMER, @@ -237,6 +245,8 @@ ecore_timer_del(Ecore_Timer *timer) EAPI void ecore_timer_interval_set(Ecore_Timer *timer, double in) { + ECORE_MAIN_LOOP_ASSERT(); + if (!ECORE_MAGIC_CHECK(timer, ECORE_MAGIC_TIMER)) { ECORE_MAGIC_FAIL(timer, ECORE_MAGIC_TIMER, @@ -255,6 +265,8 @@ ecore_timer_interval_set(Ecore_Timer *timer, double in) EAPI double ecore_timer_interval_get(Ecore_Timer *timer) { + ECORE_MAIN_LOOP_ASSERT(); + if (!ECORE_MAGIC_CHECK(timer, ECORE_MAGIC_TIMER)) { ECORE_MAGIC_FAIL(timer, ECORE_MAGIC_TIMER, @@ -275,6 +287,8 @@ ecore_timer_interval_get(Ecore_Timer *timer) EAPI void ecore_timer_delay(Ecore_Timer *timer, double add) { + ECORE_MAIN_LOOP_ASSERT(); + if (!ECORE_MAGIC_CHECK(timer, ECORE_MAGIC_TIMER)) { ECORE_MAGIC_FAIL(timer, ECORE_MAGIC_TIMER, @@ -304,6 +318,8 @@ ecore_timer_pending_get(Ecore_Timer *timer) { double now; + ECORE_MAIN_LOOP_ASSERT(); + if (!ECORE_MAGIC_CHECK(timer, ECORE_MAGIC_TIMER)) { ECORE_MAGIC_FAIL(timer, ECORE_MAGIC_TIMER, @@ -337,6 +353,8 @@ ecore_timer_freeze(Ecore_Timer *timer) { double now; + ECORE_MAIN_LOOP_ASSERT(); + if (!ECORE_MAGIC_CHECK(timer, ECORE_MAGIC_TIMER)) { ECORE_MAGIC_FAIL(timer, ECORE_MAGIC_TIMER, @@ -376,6 +394,8 @@ ecore_timer_thaw(Ecore_Timer *timer) { double now; + ECORE_MAIN_LOOP_ASSERT(); + if (!ECORE_MAGIC_CHECK(timer, ECORE_MAGIC_TIMER)) { ECORE_MAGIC_FAIL(timer, ECORE_MAGIC_TIMER, -- 2.7.4