映射/取消映射 X11 窗口时支持存储吗?

映射/取消映射 X11 窗口时支持存储吗?

我的 X11 客户端/服务器设置为使用后备存储 (backing_store = WhenMapped),当我的窗口部分被遮挡时,它可以正常工作:删除遮挡窗口的内容,现在可见的部分将从后备存储中刷新,无需我要重新画...

...但是当窗口取消映射然后再次映射时它不起作用:我收到 UnmapNotify 然后 MapNotify 事件,但我的窗口在映射时是空白的,我必须自己重新绘制整个窗口。

所以我的问题是:如何让后备存储适用于 Unmap/Map 以及 Expose? (backing_store = 始终) 没有区别。

系统:Ubuntu 16.04,X.Org X Server 1.19.3

谢谢

答案1

backing_store = always想你是指客户端代码中的窗口属性?但是您确定BackingStore您的 X 服务器已启用该选项吗?假设使用 Xorg,您应该找到您的日志(/var/log/Xorg.0.log或最近的日志~/.local/share/xorg/Xorg.0.log)并 grep 查找Backing store

> grep 'Backing store' ~/.local/share/xorg/Xorg.0.log

[    67.851] (==) intel(0): Backing store enabled

如果未启用,您可以尝试创建/etc/X11/xorg.conf.d/10-backing-store.conf(或将其添加到现有文件,如果您有一个包含部分的文件Device):

Section "Device"
  Option "BackingStore" "on"
EndSection

重新启动 X 并查看 Xorg.0.log 中是否启用了该选项。

还有+bsXorg 本身的选项(注意 +),我过去曾成功使用过该选项。

> Xorg --help
...
+bs      enable any backing store support

相关内容