1

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

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

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

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

4

1 回答 1

1

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

于 2013-01-17T00:43:09.230 回答