Функция XPending блокирует
У меня есть программа, которая имеет следующую базовую структуру:
while( true )
{
// get any X11 events
while( XPending( display ) > 0 )
{
// get an event using XNextEvent and do stuff with it
}
// draw to the display
}
Программа рендерит сцену opengl. Проблема в том, что когда я нажимаю и начинаю перетаскивать окно, XPending
вызывайте блоки get до тех пор, пока я не закончу последовательность перетаскивания, тем самым остановив все анимации, которые были в процессе. Я могу решить это решение, отправив другой поток Expose
события и, таким образом, просыпаться XPending
вызов, но в идеале я хотел бы иметь функцию X, которая проверяет события, но не блокирует вообще.
1 ответ
Решение
Если вы просто хотите обрабатывать полученные события без блокировки, чтобы ждать больше, используйте XEventsQueued(display, QueuedAlready)
вместо XPending(display)
,