取消GTK初始化的正确方法

时间:2019-05-16 15:58:04

标签: c++ gtk x11

我正在编写一个c ++应用程序,该应用程序在某个时候创建​​一个GTK3窗口,同时还在其他地方运行X11代码。

对于纯X11零件,我正在使用XOpenDisplay()打开显示屏。

运行X11部件并随后打开GTK窗口即可正常工作。多次运行X11部件也没问题,因为我使用XCloseDisplay释放了显示器。

当gtk初始化之后(更具体地说,在gtk初始化之后调用XOpenDisplay()),我尝试运行X11代码 时,会遇到我面临的问题。

我怀疑在运行gtk_init()之后,即使在gtk_main_quit()之后,显示器也永远不会释放。

我没有在gtk3文档中找到任何有关反初始化的信息。有什么方法可以适当地初始化gtk或以其他方式释放显示吗?

1 个答案:

答案 0 :(得分:0)

解决方案完全无关。我无意中两次设置了DISPLAY环境变量。显然gtk可以解决这个问题,但是XOpenDisplay崩溃了。

我添加了一个仅设置一次的测试,现在一切正常。也许gtk在gtk_main_quit()

之后确实进行了适当的初始化