Gtk 黑窗问题

Gtk 黑窗问题,gtk,Gtk,我在Rust中开发了一个基于gtk+和webkit2gtk的web浏览器,有时,所有gtk+窗口都会变成黑色 甚至我们使用环境变量gtk_DEBUG=interactive获得的gtk inspector窗口也是黑色的。 即使窗口是黑色的,UI仍然是响应的,因为我可以用键盘浏览网页(我看到窗口标题更新,显示新页面URL和加载进度) 以下是每次发生时触发此问题的两个操作: 销毁web视图 第二次运行应用程序时,它会通过Unix域套接字向第一个进程发送一条消息,以便创建一个新的web视图 不幸的

我在Rust中开发了一个基于gtk+和webkit2gtk的web浏览器,有时,所有gtk+窗口都会变成黑色

甚至我们使用环境变量
gtk_DEBUG=interactive
获得的gtk inspector窗口也是黑色的。 即使窗口是黑色的,UI仍然是响应的,因为我可以用键盘浏览网页(我看到窗口标题更新,显示新页面URL和加载进度)

以下是每次发生时触发此问题的两个操作:

  • 销毁web视图
  • 第二次运行应用程序时,它会通过Unix域套接字向第一个进程发送一条消息,以便创建一个新的web视图
不幸的是,我没有一个小例子来重现这个问题。如果您愿意,我可以向您展示该项目的代码,但它很大,非常重要,并且在gtk+上使用了许多抽象层

我知道我没有给你太多的帮助,但是如果你能给我一些关于渲染如何工作以及如何调试的解释,我将不胜感激

你能给我一些关于如何调试这个问题的提示吗

GTK+windows是否有全局OpenGL(或其他)上下文


有一些调试工具可以帮助我吗?(设置
G_MESSAGES\u DEBUG=all
不显示任何相关内容。)

使用
strace
,我可以调试此问题: 我发现用于IPC通信的FD在关闭后仍被轮询,因此它返回
POLLNVAL
。 使用
g\u source\u remove\u unix\u FD()删除FD解决了此问题