void stop_timeout(timeout* t) { // if not in the list, it was deleted in callback_timeout_expired if (g_slist_find(timeout_list, t) || g_hash_table_lookup(multi_timeouts, t)) { if (t->multi_timeout) remove_from_multi_timeout((timeout*)t); timeout_list = g_slist_remove(timeout_list, t); free((void*)t); } }
void change_timeout(timeout* t, int value_msec, int interval_msec, void (*_callback)(), void* arg) { if (g_slist_find(timeout_list, t) == 0 && g_hash_table_lookup(multi_timeouts, t) == 0) printf("programming error: timeout already deleted..."); else { if (t->multi_timeout) remove_from_multi_timeout((timeout*)t); else timeout_list = g_slist_remove(timeout_list, t); add_timeout_intern(value_msec, interval_msec, _callback, arg, (timeout*)t); } }
void change_timeout(timeout **t, int value_msec, int interval_msec, void(*_callback)(), void* arg) { if (!((timeout_list && g_slist_find(timeout_list, *t)) || (multi_timeouts && g_hash_table_lookup(multi_timeouts, *t)))) *t = add_timeout(value_msec, interval_msec, _callback, arg, t); else { if ((*t)->multi_timeout) remove_from_multi_timeout(*t); else timeout_list = g_slist_remove(timeout_list, *t); add_timeout_intern(value_msec, interval_msec, _callback, arg, *t); } }
void stop_timeout(timeout* t) { if (!t) return; // if not in the list, it was deleted in callback_timeout_expired if ((timeout_list && g_slist_find(timeout_list, t)) || (multi_timeouts && g_hash_table_lookup(multi_timeouts, t))) { if (multi_timeouts && t->multi_timeout) remove_from_multi_timeout(t); if (timeout_list) timeout_list = g_slist_remove(timeout_list, t); if (t->self) *t->self = NULL; free(t); } }