我正在使用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/