يتجاهل XWindow رسائل ClentMessage المتعددة المرسلة خلال نفس الثانية

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

  •  09-06-2019
  •  | 
  •  

سؤال

لقد واجهت مشكلة مثيرة للاهتمام أثناء تطوير تطبيق XWindows القديم الخاص بنا.

لأسباب لا تحتمل الشرح، أقوم بإرسال ClientMessage من أداة مساعدة لسطر الأوامر إلى تطبيق واجهة المستخدم الرسومية. وينتهي الأمر بمعظم الرسائل بأن تحتوي على نفس المحتويات، حيث أن غرض الرسالة هو تشغيل عملية اتصال متزامنة عبر بعض الأنابيب الجانبية .لقد لاحظت أنه في بعض الأحيان أقوم بإرسال رسالتين، ولكن يتم تسليم واحدة فقط.لقد قمت بتتبع ذلك إلى حقيقة أن كلتا الرسالتين تحتويان على نفس المحتويات وتم إرسالهما في نفس الثانية (IOW، كان الطابع الزمني للسجل عند الإرسال هو نفس الرقم).بمجرد أن أضفت بعض المحتويات الوهمية إلى الرسائل لجعلها مختلفة، اختفت المشكلة.

حدث هذا عبر خادمين X مختلفين:vncserver وتجاوز.هل أقوم بتشغيل بعض ميزات XWindows التي لست على علم بها - نوع من التحكم/الضغط للرسائل؟وقد واجه أي شخص هذا النوع من الشيء؟

هل كانت مفيدة؟

المحلول

يجب ألا يقوم خادم X أبدًا بضغط رسائل العميل التي أعرفها، ولكن ربما تقوم بعض مجموعات أدوات X (Motif، Xaw، وما إلى ذلك) بضغطها.هذا هو أول شيء سأبحث عنه - ربما يتم ضغط تطبيق واجهة المستخدم الرسومية (GUI) الذي يتلقى الرسالة في مكان ما داخل مجموعة الأدوات، قبل أن يراها رمز التطبيق.

ثم مرة أخرى، من المحتمل أن يركز كل من vncserver وpass على الاستخدام عن بعد أكثر من خوادم X الأخرى، ومن الممكن أن يحتويا على بعض عمليات الضغط غير المستحسنة.لقد قرأت الكثير من مواصفات X وكتبت الكثير من أكواد X ولم أسمع أبدًا بهذا السلوك.

فكرة عشوائية غير محتملة، تأكد من وجود XFlush() أو XSync() في نهاية تطبيق سطر الأوامر الخاص بك قبل الخروج، للتأكد من كتابة هذه الرسائل إلى المقبس قبل إغلاقه.لكنني لا أعرف سبب أهمية محتوى الرسالة إذا كانت هذه هي المشكلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top