Переменные таймауты в GLib - PullRequest
6 голосов
/ 01 июня 2010

Мне нужно изменить интервал ожидания GLib во время его выполнения. Это возможно? Я взглянул на исходный код, и он кажется мне возможным, но требуется использовать некоторые непубличные функции из внутренних компонентов GLib. Должен ли я переопределить GTimeoutSource или есть способ сделать это?

1 Ответ

3 голосов
/ 01 июня 2010

В вашей функции времени ожидания вы можете повторно добавить функцию с новым интервалом времени ожидания, а затем вернуть 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;
}
...