XWindow会忽略在同一秒内发送的多个ClentMessage
时间:2020-03-05 18:54:20 来源:igfitidea点击:
在为我们的旧版XWindows应用程序开发时遇到了一个有趣的问题。
出于不需要解释的原因,我将ClientMessage从命令行实用程序发送到GUI应用程序。大多数消息最终都具有相同的内容,因为消息的目的是触发某些侧管道上的同步通信过程。我注意到有些时候我会发送两条消息,但是只有一条被发送。我将其追溯到以下事实:两个消息具有相同的内容,并且在同一秒内发送(IOW,发送时的日志时间戳记是相同数量)。当我在消息中添加一些虚拟内容以使它们全部不同时,问题就消失了。
这发生在两个不同的X服务器上:vncserver和Exceed。我是否正在使用某些我不知道某种消息限制/压缩功能的XWindows功能?有没有人遇到过这种事情?
解决方案
回答
X服务器永远不要压缩我所知道的客户端消息,但是也许某些X工具包(Motif,Xaw等)可以压缩它们。那是我要寻找的第一件事,也许是收到消息的GUI应用正在应用程序代码看到之前压缩工具箱中的某处。
再说一次,vncserver及其它服务器可能比其他X服务器更专注于远程使用,并且可以想象,它们可能包含一些不明智的压缩黑客。我已经阅读了很多X规范并编写了很多X代码,但是从未听说过这种行为。
一个随机的,不太可能的想法,请确保在退出命令行应用程序之前在其末尾具有XFlush()或者XSync(),以确保在关闭之前将这些消息写到套接字中。但是我不知道如果这是问题,为什么消息内容会很重要。