c++ - 使用X11/Xlib确定队列中是否有事件

标签 c++ x11 xlib

我正在使用X11应用程序,正在尝试编写一个函数,该函数将处理当前队列中的所有事件,然后返回而不会阻塞。

我发现的所有Xlib教程都在永久循环中使用XNextEvent,该循环会阻塞每个XNextEvent调用,直到事件准备就绪为止。

我已经看过带有QueuedAlready的XEventsQueued,它似乎应该返回准备处理的事件数,但是即使我知道有些事件可以使用XNextEvent检索,它也总是返回0。

我是否在这里缺少任何东西,或者还有另一种方法来确定队列中是否有可用事件?

最佳答案

好吧,好像您仅使用QueuedAlready调用XEventsQueued一样,就永远不会从连接中读取事件并将其放入队列中。使用QueuedAfterFlush调用XEventsQueued将刷新输出缓冲区,然后将连接上可用的任何事件读入事件队列。 XPending也做同样的事情。我需要QueuedAfterFlush或XPending。

关于c++ - 使用X11/Xlib确定队列中是否有事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14369394/

相关文章:

c++ - 为非常大的列表选择 STL 容器

linux - 如何在 Linux 上禁止用户在几秒钟内更改操作系统窗口焦点/键入键

r - 处理 GConf 错误 : No D-BUS daemon running error in Ubuntu 12. 0.4 LTS

c - Pthread Xlib编程

linux - UTF-8 输入和使用 XGetICValues

c++ - 堆栈展开是否会释放在堆上分配的内存?

c++ - vector有推回时间限制吗

c++ - mongodb - 将字段附加到 BSONObj

linux - x11 - 在不移动指针的情况下发送鼠标点击

c++ - 使用某些静态库时在开罗出现段错误