将g_timeout_add()置于保持状态而不删除

时间:2016-01-20 08:59:12

标签: glib

我尝试将 g_timeout_add()置于保持状态,如果它遇到一个条件而未通过 g_source_remove()删除。

基本上暂停/恢复线程。

从文档g_timeout_add ()我没有意识到如何实现这一目标

现在可以这样做:

    void
    schedule_popup (gpointer data)
    {
            unschedule_popup (data);
            timeout_id = g_timeout_add_seconds (POPUP_TIMEOUT, (GSourceFunc) hide_popup_timeout_cb, data);
            g_source_set_name_by_id (timeout_id, "[myapp] hide_popup_timeout_cb");
    }

    void
    unschedule_popup (gpointer data)
    {
            if (timeout_id > 0)
                    g_source_remove (timeout_id);
            timeout_id = 0;
    }

0 个答案:

没有答案