void bus_expire_timeout_set_interval (DBusTimeout *timeout, int next_interval) { if (next_interval >= 0) { _dbus_timeout_set_interval (timeout, next_interval); _dbus_timeout_set_enabled (timeout, TRUE); _dbus_verbose ("Enabled an expire timeout with interval %d\n", next_interval); } else if (dbus_timeout_get_enabled (timeout)) { _dbus_timeout_set_enabled (timeout, FALSE); _dbus_verbose ("Disabled an expire timeout\n"); } else _dbus_verbose ("No need to disable this expire timeout\n"); }
BusExpireList* bus_expire_list_new (DBusLoop *loop, int expire_after, BusExpireFunc expire_func, void *data) { BusExpireList *list; list = dbus_new0 (BusExpireList, 1); if (list == NULL) return NULL; list->expire_func = expire_func; list->data = data; list->loop = loop; list->expire_after = expire_after; list->timeout = _dbus_timeout_new (100, /* irrelevant */ expire_timeout_handler, list, NULL); if (list->timeout == NULL) goto failed; _dbus_timeout_set_enabled (list->timeout, FALSE); if (!_dbus_loop_add_timeout (list->loop, list->timeout, call_timeout_callback, NULL, NULL)) goto failed; return list; failed: if (list->timeout) _dbus_timeout_unref (list->timeout); dbus_free (list); return NULL; }