我有一个旧的 X 应用程序作为复杂信号处理包的一部分提供。应用程序驻留在无显示服务器上,具有不同 X 服务器的客户端连接到它。
在旧的 Linux 客户端系统(例如 RHEL5)上,应用程序绘制良好,但在现代 Linux 客户端系统(例如 RHEL6、Centos5、Ubuntu10)上绘图存在缺陷 - 窗口是空白的,或者不刷新,或者乱码,或者在之前被遮挡的后面有空方块部分。
当 X 服务器调整为使用 BackingStore 选项时,问题部分消失,但这只是微小的改进。如何对应用程序进行故障排除以使其正确绘制窗口内容?必须启用任何特定的扩展和/或解决方法吗?任何旧的 X bug/细节都必须“支持”吗?
xdpyinfo
编辑:我在这里上传了一个工作客户端的转储:http://pastebin.com/W0WHQ8hx和非工作客户在这里:http://pastebin.com/X49c6ckW。看起来主要的区别在于PseudoColor
工作客户端上存在的视觉效果和非工作客户端上不存在的视觉效果,但我不确定这是否重要。
答案1
(这不是一个真正的答案,更多的是一堆建议 - 但它太长,无法放入评论中。)
命令xdpy信息提供 X 服务器功能列表,包括所有已注册扩展和视觉效果的列表;你可以从比较开始。
然而,你暗示重新启用 BackingStore 可以解决问题,这让我怀疑这是一个客户端问题:客户端对 X11 的工作做出了一些错误的假设,或者以某种方式违反了 ICCCM(Java 为此而臭名昭著),因此被破坏通过更新版本的 X11 更改了一些默认设置...
两个暂定的解决方法: