static Eina_Bool _ecore_con_info_data_handler(void *data, Ecore_Fd_Handler *fd_handler) { CB_Data *cbdata; cbdata = data; if (cbdata->cb_done) { if (ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_READ)) _ecore_con_info_readdata(cbdata); else { if (cbdata->data) { cbdata->cb_done(cbdata->data, NULL); cbdata->cb_done = NULL; ecore_con_server_infos_del(cbdata->data, cbdata); } } } _ecore_con_info_slave_free(cbdata); return ECORE_CALLBACK_CANCEL; }
int ecore_con_info_shutdown(void) { info_init--; if (info_init == 0) while (info_slaves) _ecore_con_info_slave_free(info_slaves); return info_init; }
static Eina_Bool _ecore_con_info_exit_handler(void *data, int type EINA_UNUSED, void *event) { CB_Data *cbdata; Ecore_Exe_Event_Del *ev; ev = event; cbdata = data; if (cbdata->pid != ev->pid) return ECORE_CALLBACK_RENEW; return ECORE_CALLBACK_CANCEL; /* FIXME: Woot ??? */ _ecore_con_info_slave_free(cbdata); return ECORE_CALLBACK_CANCEL; }