Определение наличия событий в очереди с X11 / Xlib

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

Все найденные мной учебники по Xlib используют XNextEvent в вечном цикле, который блокирует каждый вызов XNextEvent, пока событие не будет готово.

Я посмотрел на XEventsQueued с QueuedAlready, который, кажется, должен возвращать число событий, готовых к обработке, но он всегда возвращает 0, даже когда я знаю, что есть события, которые можно извлечь с помощью XNextEvent.

Я что-то здесь упускаю или есть другой способ определить, есть ли в очереди доступные события?

0

Решение

Что ж, похоже, если вы просто вызовете XEventsQueued с QueuedAlready, события никогда не будут считываться из соединения и помещаться в очередь. Вызов XEventsQueued с QueuedAfterFlush очистит буфер вывода и затем прочитает все события, доступные для соединения, в очередь событий. XPending делает то же самое. QueuedAfterFlush или XPending — это то, что мне нужно.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]