Ubuntu 14.04 和 Gnome 3.12,GTK Apps 黑色区域出现故障?

Ubuntu 14.04 和 Gnome 3.12,GTK Apps 黑色区域出现故障?

我在 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

我仍然不知道具体问题是什么,但这帮我解决了。希望这能有所帮助。

问候,安德里亚

相关内容