Лучший способ деинициализировать GTK - PullRequest
0 голосов
/ 16 мая 2019

Я пишу приложение на c ++, которое в определенный момент создает окно GTK3, а также выполняет код X11 в других местах.

Для чистой части X11 я использую XOpenDisplay(), чтобы открыть дисплей.

Запуск части X11 и последующее открытие окна GTK работает нормально. Многократное выполнение части X11 также не является проблемой, поскольку я отпускаю дисплей там, используя XCloseDisplay.

Проблема, с которой я сталкиваюсь, возникает, когда я пытаюсь запустить код X11 после инициализации gtk (если быть более точным, вызывая XOpenDisplay() после инициализации gtk).

Я подозреваю, что после запуска gtk_init() дисплей никогда не отключается, даже после gtk_main_quit().

Я не нашел ничего о деинициализации в документации gtk3. Можно ли как-нибудь пропустить деинициализацию gtk или освободить дисплей другим способом?

1 Ответ

0 голосов
/ 16 мая 2019

Решение было совершенно не связано.Я случайно установил переменную окружения DISPLAY дважды.Очевидно, gtk может справиться с этим, но XOpenDisplay вылетает.

Я добавил тест, чтобы установить его только один раз, теперь все работает.Возможно, gtk действительно деинициализируется после gtk_main_quit()

...