В вашей функции времени ожидания вы можете повторно добавить функцию с новым интервалом времени ожидания, а затем вернуть FALSE
, чтобы удалить время ожидания со старым интервалом:
gboolean
my_timeout_function(gpointer data)
{
// do stuff
// ...
if(need_to_change_interval)
{
g_timeout_add(new_interval, (GSourceFunc)my_timeout_function, data);
return FALSE;
}
return TRUE;
}