parent
e109255415
commit
e754564803
|
@ -455,27 +455,6 @@ _ecore_event_call(void)
|
|||
}
|
||||
}
|
||||
|
||||
#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)
|
||||
{
|
||||
|
|
|
@ -411,7 +411,7 @@ ecore_exe_pipe_run(const char *exe_cmd, Ecore_Exe_Flags flags, const void *data)
|
|||
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 @@ ecore_exe_tag_get(Ecore_Exe *exe)
|
|||
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 @@ _ecore_exe_init(void)
|
|||
void
|
||||
_ecore_exe_shutdown(void)
|
||||
{
|
||||
while (exes) _ecore_exe_free(exes);
|
||||
while (exes) ecore_exe_free(exes);
|
||||
}
|
||||
|
||||
Ecore_Exe *
|
||||
|
@ -931,35 +954,6 @@ _ecore_exe_exec_it(const char *exe_cmd)
|
|||
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 @@ _ecore_exe_event_add_free(void *data __UNUSED__, void *ev)
|
|||
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
|
||||
|
|
|
@ -390,10 +390,6 @@ Ecore_Event *_ecore_event_add(int type, void *ev, void (*func_free) (void *data
|
|||
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_signal_call(void);
|
|||
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);
|
||||
|
|
|
@ -167,7 +167,7 @@ _ecore_signal_call(void)
|
|||
/* 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 @@ _ecore_signal_call(void)
|
|||
{
|
||||
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 @@ _ecore_signal_exe_exit_delay(void *data)
|
|||
{
|
||||
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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue