XPending函数正在阻塞

XPending Function Is Blocking

本文关键字:函数 XPending      更新时间:2023-10-16

我有一个程序,它具有以下基本结构:

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调用会阻塞直到我完成拖动序列,从而停止正在进行的任何动画。我可以通过让另一个线程发送Expose事件,从而唤醒XPending调用来解决这个解决方案,但理想情况下,我希望有一个X函数来检查事件,但根本不阻塞。

如果您只想处理接收到的事件而不想阻止等待更多,请使用XEventsQueued(display, QueuedAlready)而不是XPending(display)