0

在为我们的旧版 XWindows 应用程序进行开发时,我遇到了一个有趣的问题。

由于无法解释的原因,我将 ClientMessage 从命令行实用程序发送到 GUI 应用程序。大多数消息最终具有相同的内容,因为消息的目的是触发一些侧管道上的同步通信过程. 我注意到有时我会发送两条消息,但只有一条被发送。我已经追踪到这两个消息具有相同的内容并且是在同一秒内发送的事实(IOW,发送时的日志时间戳是相同的数字)。一旦我在消息中添加了一些虚拟内容以使它们都不同,问题就消失了。

这发生在两个不同的 X 服务器上:vncserver 和 Exceed。我是否遇到了一些我不知道的 XWindows 功能 - 某种消息限制/压缩?有没有人遇到过这种事情?

4

1 回答 1

0

X 服务器不应该压缩我知道的客户端消息,但也许某些 X 工具包(Motif、Xaw 等)会压缩它们。这是我要寻找的第一件事——也许接收消息的 GUI 应用程序在应用程序代码看到它之前正在压缩工具包内的某个地方。

再说一次,vncserver 和超过可能比其他 X 服务器更关注远程使用,并且它们可能包含一些不明智的压缩黑客,可以想象。我已经阅读了很多 X 规范并编写了很多 X 代码,但从未听说过这种行为。

一个随机的不太可能的想法,请确保在命令行应用程序退出之前在其末尾有一个 XFlush() 或 XSync(),以确保在关闭之前将这些消息写入套接字。但我不知道如果这是问题,为什么消息内容会很重要。

于 2008-09-16T00:43:56.593 回答