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

Determining if there are events in the queue with X11/Xlib

本文关键字:是否 事件 队列 X11 Xlib 使用      更新时间:2023-10-16

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

我找到的所有Xlib教程都在一个永久循环中使用XNextEvent,该循环在每个XNextEvent调用上阻塞,直到事件准备好。

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

我在这里错过了什么,或者有另一种方法来确定队列中是否有可用的事件?

它看起来就像如果你只是调用XEventsQueued与QueuedAlready事件永远不会从连接中读取并放入队列。使用QueuedAfterFlush调用xeventqueue将刷新输出缓冲区,然后将连接上可用的任何事件读入事件队列。XPending做同样的事情。QueuedAfterFlush或XPending是我需要的