Enlightenment CVS committal Author : onefang Project : e17 Module : libs/ecore
Dir : e17/libs/ecore/src/lib/ecore Modified Files: ecore_events.c ecore_exe.c ecore_private.h ecore_signal.c Log Message: Refactoring the exe exit stuff. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore/ecore_events.c,v retrieving revision 1.21 retrieving revision 1.22 diff -u -3 -r1.21 -r1.22 --- ecore_events.c 15 Jan 2006 11:27:19 -0000 1.21 +++ ecore_events.c 16 Jan 2006 03:20:35 -0000 1.22 @@ -455,27 +455,6 @@ } } -#ifndef WIN32 -void * -_ecore_event_exe_exit_new(void) -{ - Ecore_Exe_Event_Del *e; - - e = calloc(1, sizeof(Ecore_Exe_Event_Del)); - return e; -} - -void -_ecore_event_exe_exit_free(void *data __UNUSED__, void *ev) -{ - Ecore_Exe_Event_Del *e; - - e = ev; - if (e->exe) _ecore_exe_free(e->exe); - free(e); -} -#endif - EAPI void * _ecore_event_signal_user_new(void) { =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore/ecore_exe.c,v retrieving revision 1.43 retrieving revision 1.44 diff -u -3 -r1.43 -r1.44 --- ecore_exe.c 15 Jan 2006 11:27:19 -0000 1.43 +++ ecore_exe.c 16 Jan 2006 03:20:36 -0000 1.44 @@ -411,7 +411,7 @@ if (!ok) { /* Something went wrong, so pull down everything. */ if (exe->pid) ecore_exe_terminate(exe); - IF_FN_DEL(_ecore_exe_free, exe); + IF_FN_DEL(ecore_exe_free, exe); } else { @@ -535,13 +535,36 @@ EAPI void * ecore_exe_free(Ecore_Exe *exe) { + void *data; + int ok = 0; + int result; + if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE)) { ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_free"); return NULL; } - return _ecore_exe_free(exe); + + data = exe->data; + + IF_FN_DEL(ecore_timer_del, exe->doomsday_clock); + IF_FN_DEL(ecore_main_fd_handler_del, exe->write_fd_handler); + IF_FN_DEL(ecore_main_fd_handler_del, exe->read_fd_handler); + IF_FN_DEL(ecore_main_fd_handler_del, exe->error_fd_handler); + if (exe->child_fd_write) E_NO_ERRNO(result, close(exe->child_fd_write), ok); + if (exe->child_fd_read) E_NO_ERRNO(result, close(exe->child_fd_read), ok); + if (exe->child_fd_error) E_NO_ERRNO(result, close(exe->child_fd_error), ok); + IF_FREE(exe->write_data_buf); + IF_FREE(exe->read_data_buf); + IF_FREE(exe->error_data_buf); + IF_FREE(exe->cmd); + + exes = _ecore_list2_remove(exes, exe); + ECORE_MAGIC_SET(exe, ECORE_MAGIC_NONE); + IF_FREE(exe->tag); + free(exe); + return data; } /** @@ -822,7 +845,7 @@ void _ecore_exe_shutdown(void) { - while (exes) _ecore_exe_free(exes); + while (exes) ecore_exe_free(exes); } Ecore_Exe * @@ -931,35 +954,6 @@ return; } -void * -_ecore_exe_free(Ecore_Exe *exe) -{ - void *data; - int ok = 0; - int result; - - data = exe->data; - - IF_FN_DEL(ecore_timer_del, exe->doomsday_clock); - IF_FN_DEL(ecore_main_fd_handler_del, exe->write_fd_handler); - IF_FN_DEL(ecore_main_fd_handler_del, exe->read_fd_handler); - IF_FN_DEL(ecore_main_fd_handler_del, exe->error_fd_handler); - if (exe->child_fd_write) E_NO_ERRNO(result, close(exe->child_fd_write), ok); - if (exe->child_fd_read) E_NO_ERRNO(result, close(exe->child_fd_read), ok); - if (exe->child_fd_error) E_NO_ERRNO(result, close(exe->child_fd_error), ok); - IF_FREE(exe->write_data_buf); - IF_FREE(exe->read_data_buf); - IF_FREE(exe->error_data_buf); - IF_FREE(exe->cmd); - - exes = _ecore_list2_remove(exes, exe); - ECORE_MAGIC_SET(exe, ECORE_MAGIC_NONE); - IF_FREE(exe->tag); - free(exe); - return data; -} - - static int _ecore_exe_data_generic_handler(void *data, Ecore_Fd_Handler *fd_handler, Ecore_Fd_Handler_Flags flags) { @@ -1250,4 +1244,23 @@ e = ev; free(e); } + +void * +_ecore_exe_event_del_new(void) +{ + Ecore_Exe_Event_Del *e; + + e = calloc(1, sizeof(Ecore_Exe_Event_Del)); + return e; +} + +void +_ecore_exe_event_del_free(void *data __UNUSED__, void *ev) +{ + Ecore_Exe_Event_Del *e; + + e = ev; + if (e->exe) ecore_exe_free(e->exe); + free(e); +} #endif =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore/ecore_private.h,v retrieving revision 1.36 retrieving revision 1.37 diff -u -3 -r1.36 -r1.37 --- ecore_private.h 13 Jan 2006 04:31:41 -0000 1.36 +++ ecore_private.h 16 Jan 2006 03:20:36 -0000 1.37 @@ -390,10 +390,6 @@ void *_ecore_event_del(Ecore_Event *event); void _ecore_event_call(void); -#ifndef WIN32 -void *_ecore_event_exe_exit_new(void); -void _ecore_event_exe_exit_free(void *data, void *ev); -#endif EAPI void *_ecore_event_signal_user_new(void); void *_ecore_event_signal_hup_new(void); void *_ecore_event_signal_exit_new(void); @@ -411,7 +407,8 @@ void _ecore_exe_init(void); void _ecore_exe_shutdown(void); Ecore_Exe *_ecore_exe_find(pid_t pid); -void *_ecore_exe_free(Ecore_Exe *exe); +void *_ecore_exe_event_del_new(void); +void _ecore_exe_event_del_free(void *data, void *ev); #endif void _ecore_animator_shutdown(void); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore/ecore_signal.c,v retrieving revision 1.28 retrieving revision 1.29 diff -u -3 -r1.28 -r1.29 --- ecore_signal.c 15 Jan 2006 11:27:19 -0000 1.28 +++ ecore_signal.c 16 Jan 2006 03:20:36 -0000 1.29 @@ -167,7 +167,7 @@ /* FIXME: If this process is set respawn, respawn with a suitable backoff * period for those that need too much respawning. */ - e = _ecore_event_exe_exit_new(); + e = _ecore_exe_event_del_new(); if (e) { if (WIFEXITED(status)) @@ -218,7 +218,7 @@ { if (e->exe) printf("Sending exit event for %s.\n", e->exe->cmd); _ecore_event_add(ECORE_EXE_EVENT_DEL, e, - _ecore_event_exe_exit_free, NULL); + _ecore_exe_event_del_free, NULL); } } } @@ -505,7 +505,7 @@ { printf("Sending delayed exit event for %s.\n", e->exe->cmd); _ecore_event_add(ECORE_EXE_EVENT_DEL, e, - _ecore_event_exe_exit_free, NULL); + _ecore_exe_event_del_free, NULL); } return 0; } ------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Do you grep through log files for problems? Stop! Download the new AJAX search engine that makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs