GLib中的可变超时

时间:2010-06-01 09:23:50

标签: c gtk glib

我需要在执行时修改GLib的超时间隔。那可能吗?我查看了源代码,对我来说似乎是可能的,但是需要使用GLib内部的一些非公共函数。我应该重新实现GTimeoutSource还是有办法做到这一点?

1 个答案:

答案 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;
}