【问题标题】:Determining if there are events in the queue with X11/Xlib使用 X11/Xlib 确定队列中是否有事件
【发布时间】:2013-01-16 22:53:40
【问题描述】:

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

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

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

我在这里遗漏了什么,还是有其他方法可以确定队列中是否有可用的事件?

【问题讨论】:

    标签: c++ x11 xlib


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      • 1970-01-01
      • 2011-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多