Функция 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),

2

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector