Xlib: последовательность потеряна в типе ответа 0x2

у меня возникла эта ошибка (Xlib: последовательность потеряна в типе ответа 0x2) в программе, которую я поддерживаю (я не первоначальный разработчик).

Я далек от того, чтобы быть экспертом в программировании Xlib, и я включил мотив в тег только потому, что эта программа была написана с использованием этого инструментария. Я провел некоторое исследование перед публикацией и обнаружил, что эта ошибка, вероятно, связана с потоком (отличным от пользовательского интерфейса), который пытается обновить сам пользовательский интерфейс. Поискав в коде, я нашел несколько вызовов XTestFakeKeyEvent и XtIsManaged, которые, я уверен, используются в другом потоке из пользовательского интерфейса.

Мой вопрос: могут ли эти две функции вызвать эту ошибку?

Я бы подумал, что только функции, которые обновляют графический интерфейс (например, устанавливают текст метки), могут вызывать проблемы такого рода (и эти две функции, похоже, не влияют напрямую на графический интерфейс), но я, честно говоря, не знаю. ...


person fraben    schedule 10.01.2014    source источник


Ответы (1)


Скорее всего, виноват XTestFakeKeyEvent. Он вводит событие нажатия/отпускания клавиши, которое может испортить очередь событий.

XtIsManaged не вызовет изменения, но может дать неправильный результат, если управляемое состояние изменится во время его выполнения.

person parkydr    schedule 10.01.2014
comment
Спасибо! Тем временем я начал модифицировать код. В основном я добавлю канал, добавляя его как один из источников событий основного цикла (с XtAppAddInput, если я правильно помню), и тогда я должен быть в порядке. - person fraben; 13.01.2014