Gtk 黑窗问题
我在Rust中开发了一个基于gtk+和webkit2gtk的web浏览器,有时,所有gtk+窗口都会变成黑色 甚至我们使用环境变量Gtk 黑窗问题,gtk,Gtk,我在Rust中开发了一个基于gtk+和webkit2gtk的web浏览器,有时,所有gtk+窗口都会变成黑色 甚至我们使用环境变量gtk_DEBUG=interactive获得的gtk inspector窗口也是黑色的。 即使窗口是黑色的,UI仍然是响应的,因为我可以用键盘浏览网页(我看到窗口标题更新,显示新页面URL和加载进度) 以下是每次发生时触发此问题的两个操作: 销毁web视图 第二次运行应用程序时,它会通过Unix域套接字向第一个进程发送一条消息,以便创建一个新的web视图 不幸的
gtk_DEBUG=interactive
获得的gtk inspector窗口也是黑色的。
即使窗口是黑色的,UI仍然是响应的,因为我可以用键盘浏览网页(我看到窗口标题更新,显示新页面URL和加载进度)
以下是每次发生时触发此问题的两个操作:
- 销毁web视图
- 第二次运行应用程序时,它会通过Unix域套接字向第一个进程发送一条消息,以便创建一个新的web视图
有一些调试工具可以帮助我吗?(设置
G_MESSAGES\u DEBUG=all
不显示任何相关内容。)使用strace
,我可以调试此问题:
我发现用于IPC通信的FD在关闭后仍被轮询,因此它返回POLLNVAL
。
使用g\u source\u remove\u unix\u FD()删除FD解决了此问题