Функции таймаута подключаются и отключаются точно также, как и функции выхода; ожидаемый обработчик такой же. "gtk_timeout_add()" ожидает аргумент interval; обработчик вызывается каждые interval миллисекунд. Если обработчик когда-либо возвратит FALSE, он удаляется из списка функций таймаута, так же, как если бы вы вызвали "gtk_timeout_remove()". Небезопасно вызывать "gtk_timeout_remove()" изнутри функции таймаута; это меняет список таймаутов в то время, как Gtk+ по нему проходит, вызывая падения. Вместо этого, верните FALSE для удаления функции.
guint gtk_timeout_add(guint32 interval,
GtkFunction function, gpointer data)
void gtk_timeout_remove(guint timeout_handler_id)