我尝试将 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;
}