c - GLib 中的可变超时

标签 c gtk glib

我需要在 GLib 执行时修改它的超时间隔。那可能吗?我查看了源代码,这对我来说似乎是可行的,但需要使用 GLib 内部的一些非公共(public)函数。我应该重新实现 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;
}

关于c - GLib 中的可变超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2948538/

相关文章:

c - GTK+ Drawing_Area Image Redraw with Expose 事件

c - GLib 哈希表查找失败

ubuntu - 安装 Sharp/usr/include/vips/vips8 :35:25: fatal error: glib-object. h

c - 使用哈希函数的高效直方图实现

c - 如何正确比较命令行参数?

c - 按匹配概率对 switch case 进行排序是否可以提高效率?

c - 当用户使用 GTK+2 在窗口外单击时如何关闭窗口?

Windows 上的 gtk.StatusIcon 和 gtk.Menu

c - 使用 glib/gio 指定 ipv6 接口(interface)

c - 数组指针作为参数传递给其他函数时会更改值