我正在研究一个X11应用程序,我正在尝试编写一个函数来处理当前队列中的所有事件,然后无阻塞地返回。
我发现的所有Xlib教程都在永久循环中使用XNextEvent,它在每个XNextEvent调用上都会阻塞,直到事件准备就绪。
我已经使用QueuedAlready查看了XEventsQueued,它似乎应该返回准备好处理的事件数,但是即使我知道有可以使用XNextEvent检索的事件,它总是返回0。
我在这里遗漏了什么,或者是否有另一种方法来确定队列中是否有可用的事件?
答案 0 :(得分:0)
好吧,如果您只是使用QueuedAlready调用XEventsQueued,那么事件永远不会从连接中读取并放入队列中。使用QueuedAfterFlush调用XEventsQueued将刷新输出缓冲区,然后将连接上可用的任何事件读取到事件队列中。 XPending做同样的事情。 QueuedAfterFlush或XPending就是我所需要的。