Главный цикл в основном реализован в glib, которая имеет общую
абстракцию для главного цикла. Gtk+ подключает главный цикл
glib к соединению с X-сервером, и предоставляет
удобный интерфейс (цикл glib довольно низкоуровневый по сравнению
с циклом Gtk+). Основной интерфейс главного цикла Gtk+
показан в списке функций 3..12.
"gtk_main()" выполняет главный цикл.
"gtk_main()" не вернет управление до тех пор, пока не будет
вызвана функция "gtk_main_quit()".
"gtk_main()" может быть вызвана рекурсивно; каждый вызов
"gtk_main_quit()" завершает один экземпляр
"gtk_main()". "gtk_main_level()" возвращает
уровень рекурсии; то есть она вернет 0, если не работает ни одна
"gtk_main()", 1, если работает одна
"gtk_main()", и т.д.
Все экземпляры "gtk_main()" функционально идентичны; все они
следят за одним подключением к X-серверу и работают с одной
очередью событий. Экземпляры "gtk_main()" используются для
блокирования, приостанавливая выполнение функции до наступления каких-то
событий. Все программы Gtk+ используют этот прием для
предотвращения выхода из "main()" во время выполнения
приложения. Функция "gnome_dialog_run()" (см. раздел 7.2)
использует рекурсивный главный цикл, поэтому она не вернет управление до тех
пор, пока пользователь не нажмет кнопку диалога.
Иногда вы захотите обработать несколько событий без обработки потока
управления в "gtk_main()". Вы можете произвести одиночную
итерацию главного цикла, вызвав "gtk_main_iteration()".
Она должна обработать одиночное событие, например; это зависит от того, какие
задачи ожидают в очерели. Вы можете проверить, не ожидают ли какие-либо
события обработки, вызвав "gtk_events_pending()". Вместе, эти
две функции позволяют вам временно вернуть управление Gtk+, и
таким образом графический интерфейс может наверстать упущенное.
Например, во время длительного вычисления, вы захотите показать индикатор
прогресса; вы должны позволить главному циклу Gtk+ периодически
выполняться, тогда Gtk+ сможет перерисовать индикатор. Используйте
следующий код:
while (gtk_events_pending())
gtk_main_iteration();
Журнал "Linux Format" (Линукс Формат)- Единственный в России и странах СНГ журнал на русском языке,
посвящённый Linux и свободному ПО. Журнал для IT-директоров, IT-менеджеров, программистов, системных
администраторов, учителей школ и преподавателей ВУЗов и всех пользователей ПК. В каждом выпуске: Новости
индустрии OpenSource, обзоры новинок свободного ПО, обучающие и методические статьи.
Каждый, кто оформит подписку, получает бонус- объёмные наклейки на системный блок и подарки: с одним из
первых выпусков журнала в 2012 году- диск с архивом номеров за 2005-2011 г.г. и ежемесячно электронную
версию журнала в pdf-формате.
Подробнее о проведении акции вы можете прочитать на
странице сайта.