XWindow ignore plusieurs messages ClentMessage envoyés au cours de la même seconde

StackOverflow https://stackoverflow.com/questions/66111

  •  09-06-2019
  •  | 
  •  

Question

J'ai rencontré un problème intéressant lors du développement de notre ancienne application XWindows.

Pour des raisons qui ne demandent pas d'explication, j'envoie ClientMessage d'un utilitaire de commande standard à une application d'interface graphique. La plupart des messages finissent par avoir le même contenu, car le but du message est de déclencher un processus de communication synchrone des tuyaux latéraux. J'ai remarqué que, parfois, j'envoyais deux messages, mais un seul était remis. J'ai pu en déduire que les deux messages avaient le même contenu et étaient envoyés dans la même seconde (IOW, l'horodatage du journal d'envoi était le même numéro). Dès que j'ai ajouté du contenu factice aux messages pour les rendre tous différents, le problème a disparu.

Cela s’est produit sur deux serveurs X différents: vncserver et Exceed. Suis-je en train de frapper certaines fonctionnalités de XWindows dont je ne suis pas au courant - une sorte de message de limitation / compression? Quelqu'un at-il rencontré ce genre de chose?

Était-ce utile?

La solution

Le serveur X ne devrait jamais compresser les messages clients dont je suis au courant, mais peut-être que certains kits d'outils X (Motif, Xaw, etc.) les compressent. C’est la première chose que je voudrais rechercher: l’application graphique qui reçoit le message est peut-être compressée quelque part dans la boîte à outils, avant que le code de l’application ne le voie.

Là encore, vncserver et beyond se concentrent probablement davantage sur l'utilisation à distance que les autres serveurs X, et ils pourraient éventuellement contenir des piratages de compression malavisés. J'ai lu beaucoup de spécifications X et écrit beaucoup de code X mais je n'ai jamais entendu parler de ce comportement.

Pensée aléatoire improbable, assurez-vous que vous avez un XFlush () ou un XSync () à la fin de votre application en ligne de commande avant de la quitter, pour être sûr d'écrire ces messages dans le socket avant de fermer. Mais je ne sais pas pourquoi le contenu du message importerait si tel était le problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top