2008-09-15 3 views
0

Ich habe ein interessantes Problem bei der Entwicklung für unsere ältere XWindows-Anwendung festgestellt.XWindow ignoriert mehrere ClentMessages, die während derselben Sekunde gesendet wurden

Aus Gründen, die nicht erklären erklären, sende ich ClientMessage von einem Comand-Line-Dienstprogramm zu einer GUI-app.Most der Nachrichten am Ende haben den gleichen Inhalt, da die Nachricht Zweck ist, einen synchronen Kommunikationsprozess auszulösen über einige Seitenpfeifen. Ich habe bemerkt, dass ich manchmal zwei Nachrichten verschicke, aber nur eine wird geliefert. Ich habe dies auf die Tatsache zurückgeführt, dass beide Nachrichten den gleichen Inhalt hatten und in der gleichen Sekunde gesendet wurden (IOW, der Protokollzeitstempel beim Senden war die gleiche Nummer). Sobald ich den Nachrichten Dummy-Inhalte hinzugefügt hatte, um sie alle anders zu machen, ging das Problem weg.

Dies geschah über zwei verschiedene X-Server: vncserver und Exceed. Triff ich ein XWindows-Feature, das mir nicht bekannt ist - irgendeine Art von Drosselung/Komprimierung von Nachrichten? Ist jemand auf diese Art von Dingen gestoßen?

+0

Sie können dies als XWindow anstelle von XWindows umbenennen. http://en.wikipedia.org/wiki/XWindow – hoyhoy

Antwort

0

Der X-Server sollte niemals Client-Nachrichten, die ich kenne, komprimieren, aber vielleicht X-Toolkits (Motif, Xaw, etc.) sie komprimieren. Das ist das erste, wonach ich suchen würde - vielleicht komprimiert die GUI-App, die die Nachricht empfängt, irgendwo innerhalb des Toolkits, bevor der Anwendungscode es sieht.

Dann wieder, sowohl vncserver und übertreffen wahrscheinlich konzentrieren sich mehr auf Remote-Nutzung als andere X-Server, und sie könnten einige schlecht beratene Kompression Hacks, denkbar. Ich habe viele X-Spezifikationen gelesen und viel X-Code geschrieben und habe nie von diesem Verhalten gehört.

Ein zufälliger unwahrscheinlich Gedanke, sicher sein, dass Sie eine XFlush() oder XSync() am Ende Ihrer Befehlszeile App, bevor es beendet, um sicherzustellen, dass Sie diese Nachrichten in den Socket vor dem Schließen schreiben. Aber ich weiß nicht, warum Nachrichteninhalt wichtig wäre, wenn dies das Problem ist.

+0

Danke für die Antwort. Das Toolkit am X-Ende ist Open Interface (AKA Neuron Data), Gott hilf mir. Ich halte meine Augen offen ... – Arkadiy

Verwandte Themen