GLib中的可变超时

Mat*_*ana 6 c gtk glib

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

pto*_*ato 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;
}
Run Code Online (Sandbox Code Playgroud)