使用X11协议的Lisp实现,当没有运行合成器时,get-overlay-window会冻结。如果我取消了Lisp进程,则将xid打印出来。 这也冻结了我在另一个lisp线程中运行的lisp窗口管理器,尽管过程相同。基本上,X的行为就像被抢走一样,所以感谢上帝ctrl-alt-f1。
以前有关复合的一些问题表明,没有复合器运行时,其他问题也会遇到类似的问题。
我猜测服务器可能正在等待某种超出协议授权的权限?还是必须完成一些特定的事件顺序?
当另一个合成器处于活动状态时,可以访问覆盖窗口对编写合成器没有帮助!
答案 0 :(得分:0)
显然我的阅读理解与协议描述不符,或者他们的写作不通。
自动请求复合窗口重定向以确保Windows内容被绘制。它不能确保它们被覆盖层吸引!叠加层也不是透明的。因此,即使将所有窗口都设置为自动更新,当调用调用覆盖窗口以获取其XID时,它也会阻止您看到屏幕上的任何其他更新并阻止所有输入。
在某种意义上进行覆盖不是很有用。或对重定向的窗口进行自动更新的请求没有用。无论哪种方式,似乎都必须绘制每个像素,即使是我们不感兴趣的窗口也是如此。
也许这只是司机的事?