X11:从队列中删除事件

时间:2013-01-03 17:08:46

标签: events event-handling x11

我正在使用名为:Gameplay的引擎创建FPS演示。我正在尝试将captureMouse()函数定义到引擎中,以便玩家可以环顾地图。我已经能够将光标固定在窗口的中心并将其变为不可见,但是当我移动鼠标时,屏幕(相机)似乎在它四处移动时“振动”。经过大量修补X11函数后,我发现我用来将光标变回窗口中心的XWarpPointer()函数正在向事件队列添加“鼠标移动”事件。

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

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

如果我不清楚,我很抱歉。我对X11没有广泛的了解,但我真的需要将它添加到引擎中,这样我就可以将它添加到我的游戏中。

1 个答案:

答案 0 :(得分:0)

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

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

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

如果你想处理事件调用XtDispatchEvent,不要忽略它。

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