我需要在执行时修改GLib的超时间隔。那可能吗?我查看了源代码,对我来说似乎是可能的,但是需要使用GLib内部的一些非公共函数。我应该重新实现GTimeoutSource还是有办法做到这一点?
答案 0 :(得分:3)
在你的超时功能中,你可以用新的超时间隔重新添加该功能,然后返回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;
}