Я должен изменить интервал тайм-аута GLIB, в то время как это находится в выполнении. Это возможно? Я смотрел к исходному коду, и это кажется возможным мне, но требуется, используют некоторые непубличные функции от Бойких внутренностей. Я должен повторно реализовать GTimeoutSource или существует способ сделать это?
В вашей функции тайм-аута , вы можете повторно добавить функцию с новым интервалом тайм-аута, а затем вернуть 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;
}