X11:从队列删除事件



我正在使用一个名为:Gameplay的引擎创造一个FPS演示。我目前正在尝试在引擎中定义一个captureMouse()函数,以便玩家可以环顾地图。我已经能够将光标固定在窗口的中心并使其不可见,但是当我移动鼠标时,屏幕(相机)似乎在移动时"振动"。在对X11函数进行了大量的修改之后,我发现用于将光标移回窗口中心的XWarpPointer()函数正在向事件队列中添加一个"鼠标移动"事件。

问题:如何在事件周期捕获事件之前从事件队列中识别和删除事件?

问题:是否有人遇到过类似的问题,并以不同的方式解决?如果有,你做了什么?

如果我没有说清楚,我很抱歉。我对X11并不了解,但我确实需要将其添加到引擎中,以便将其添加到我的游戏中。

我猜你是在使用XtAppMainLoop来处理你的事件。

这实际上是对XtAppNextEvent的调用,然后是XtDispatchEvent。

如果你用一个调用XtAppNextEvent的循环来替换XtAppMainLoop来获取下一个事件并检查它的类型(XEvent结构的类型字段)。

如果你想处理事件调用XtDispatchEvent,不做任何事情来忽略它。

当XtAppGetExitFlag返回true时,循环需要退出(或者添加自己的退出标志)。

最新更新