我在 Linux&Unix 部分问了同样的问题,但我怀疑这主要用于脚本,所以我也将其留在这里。
我的设置是:
- Ubuntu GNOME 14.04
- gnome 3.12
- 已安装 gtk2(版本 2.24.24)和 gtk3(版本 3.12.2)
- 集成英特尔显卡 4400
有时我在使用某些应用程序时会遇到奇怪的图形行为:可点击部分是完全黑色/透明的并假设他们的 仅当我单击它们时才纠正颜色。
下面两张图片展示了使用 GTKwave(我上数字系统设计课必须使用的软件)的前后情况。 前和后点击几下(请注意右上角的黑条,没有可点击的项目)。
这不是唯一一个出现此行为的应用程序,但在这种情况下,它非常烦人。此外,如果我调整窗口大小,错误会再次出现,我必须“重新绘制”整个窗口。
我只发现一个类似的问题,但与 KDE 相关,而我正在使用 GNOME。
我尝试将 gnome-shell 主题改回默认主题(使用 numix),但什么也没发生。
我能解决这个问题吗?我期待您的建议,因为我现在有点卡住了,不想在虚拟机上运行模拟。
提前致谢,安德里亚
答案1
我以前从未见过这种情况,我是编写该程序的人。这可能是您的图形后端出了问题,因为这两个区域都是 GdkPixmap。我很高兴听到这不仅仅是 gtkwave。请注意,这些区域会忽略主题,因此除非合成器/渲染器对这些区域有某种影响,例如设置 alpha 通道或 gtk2 中不常见的内容,否则很可能不会出现这种情况。
在 X 服务器发生曝光事件时,这些区域会自动复制回主区域。我不知道您是否在使用 Wayland 或类似的东西,并且 Gdk 的 gtk2 渲染后端中缺少从 gtkwave 的私有后备存储复制到屏幕上可见内容的曝光事件。
在 wavewindow.c 的 wavearea_configure_event() 中,您将看到一个调试 printf。删除 DEBUG() 以显示 printf,以查看是否有配置事件发送到 Gdk。当 wavearea 或 signalarea 的一部分被覆盖/未覆盖/调整大小/等时,应该会发生这些事件。调整大小似乎表明配置事件正在丢失。
总而言之,在我看来,这听起来像是 gtk2 的 Gdk 后端中的一个有趣的错误。如果是这样的话,您可能能够使用 Xephyr/Xnest/whatever 来获得合理的 X11 表示。在同一个会话中启动 vncserver 和 vncviewer 并将 gtk 定位到该会话中也是一样。
注意:gtkwave 尚未转换为 gtk3,主要是因为 gtk3 缺少很多我需要的功能,而重写大量查看器并不是我的待办事项清单上的优先事项。
-托尼
答案2
根据我的经验,此类图形故障通常与图形驱动程序有关 - 这是一个很广泛的领域。尽管如此,也有人报告过类似的症状固定的(或者至少可以解决这个问题)通过添加COGL_ATLAS_DEFAULT_BLIT_MODE=framebuffer
到您的 /etc/environment 文件。注销并再次登录,然后通过检查变量是否设置正确env | grep -i cogl
。
由于涉及许多组件(软件和硬件),因此这是一个不太可能的尝试,但我认为值得一试,因为它很简单。祝你好运。
答案3
我修复了这个问题。我在论坛上找到了解决方案这问题在更一般的搜索中。答案也是一般的,因为它是
升级图形堆栈,包括英特尔驱动程序和内核
这可以从终端完成:
sudo apt-get install --install-recommends linux-generic-lts-utopic xserver-xorg-lts-utopic libqt5gui5 libgles1-mesa-lts-utopic libgles2-mesa-lts-utopic libgl1-mesa-glx-lts-utopic libgl1-mesa-glx-lts-utopic:i386 libglapi-mesa-lts-utopic:i386 libegl1-mesa-drivers-lts-utopic
我仍然不知道具体问题是什么,但这帮我解决了。希望这能有所帮助。
问候,安德里亚