xcompmgr 提供以下选项:
-s Server-side compositing with hard-edged shadows.
通过实验,我可以说这比“客户端”选项快得多。但它到底在做什么?在 Xorg 中,客户端和服务器端合成有什么区别?
而且,更重要的是:如果我想在窗口管理器等中实现服务器端合成,我必须使用哪组 Xorg 函数?
答案1
因此,查看 xcompmgr 源代码,我发现:
-s 和 -c 之间的主要区别似乎是阴影效果本身是如何实现的,而不是合成是如何完成的。我在准确了解正在发生的事情时遇到一些麻烦(图形不是我的强项),但生成“服务器端”阴影的例程看起来更简单。我认为它只是创建一个窗口大小的透明灰色位图或其他东西。重点是,这是一个更便宜的例行程序。
我想要的函数列在“man Xcomposite”中,并且可以在 X11/extensions/Xcomposite.h 中找到。对于合成管理器(或合成 WM),人们特别需要 XCompositeRedirectSubwindows() 和 XCompositeUnredirectSubwindows()。 (后者必须在关闭 X 显示之前运行,否则会出现段错误。)