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

Другие вопросы по тегам