c++ - XPending 函数被阻塞

标签 c++ x11 blocking

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

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 函数来检查事件,但不这样做根本不阻塞。

最佳答案

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

关于c++ - XPending 函数被阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17371782/

相关文章:

linux - X11 和假键盘/鼠标事件

c++ - 什么可能导致非阻塞套接字在 `recv` 上阻塞?

c++ - 模板函数 : perform conversion based on typename

c++ - 为什么 C++ 支持带实现的纯虚函数?

c++ - 为什么我用的教程一点错误都没有,我的代码却出错了?

c - 我的 X11 代码有什么问题?

尝试从使用 makefile 生成的目标文件构建时出现 C++ 链接器错误。当我刚刚构建它时不会发生

c - 为什么 cairo 不利用循环的第一次迭代?

html - 如何防止从我的网站下载图片和视频文件?

java - ReadWriteLock装饰器,这段代码线程安全吗?