Events X11:正在从队列中删除事件

Events X11:正在从队列中删除事件,events,event-handling,x11,Events,Event Handling,X11,我正在使用一个名为:Gameplay的引擎创建一个FPS演示。我目前正在尝试在引擎中定义captureMouse()函数,以便玩家可以查看地图。我已经能够将光标固定在窗口的中心并使其不可见,但当我移动鼠标时,屏幕(相机)似乎会随着移动而“振动”。在对X11函数进行了大量修补之后,我发现我用来将光标扭曲回窗口中心的XWarpPointer()函数正在向事件队列添加一个“鼠标移动”事件 X11问题:在事件周期捕获事件之前,如何从事件队列中识别和删除事件 问题:是否有人遇到过类似的问题并以不同的方式解

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

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

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


如果我不清楚,我很抱歉。我对X11没有太多的了解,但我真的需要将其添加到引擎中,这样我才能将其添加到我的游戏中。

我猜您正在使用XtAppMainLoop来处理事件

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

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

如果要处理事件调用XtDispatchEvent,请不要忽略它


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

如果我没有弄错的话,您描述的函数是Xtoolkit的一部分。但是,游戏引擎使用纯Xlib。这里有一个我写的代码链接到这篇文章:你必须去第八篇文章。这就是代码所在。我不知道你在使用游戏库。看看代码,您是否重写了Game::mouseEvent并返回true?我确实重写了项目源代码中的函数,但没有显式返回true。为什么会这样问?在Platform::mouseEventInternal中,如果mouseEvent返回false,则将事件传递给脚本控制器;在多个位置,如果mouseEventInternal返回false,则调用touchEventInternal。我想知道这些是否与活动有关,并导致您的问题。非常感谢。虽然您的建议不是问题所在,但它让我返回并重新访问mouseEvent()函数中的一些旧代码。显然问题不在于x11代码中缺少什么。相反,我的一些旧代码与捕获鼠标指针的函数冲突。现在一切都好了:D