The problem is that depending on X's load, it can take a while to process - I have measured times from 10 us to 30 ms. The average is sub-1ms, but the occasional spike can be felt.
The problem is aggravated by several calls in the FPS cam without even attempting to cache, such as:
Code: Select all
CSceneNodeAnimatorCameraFPS.cpp: core::vector2d<u32> mousepos(u32(CursorControl->getPosition().X), u32(CursorControl->getPosition().Y));
I'm not sure whether skipping the XQueryPointer call altogether and using the coordinates from the last mouse move event would be usable. Maybe not in low fps.
Perhaps cache with a time delta? If the last call was > 10ms ago, only then do another?