if (!Null)\r
{\r
#ifdef _IRR_LINUX_X11_XINPUT2_\r
- XIGetClientPointer(Device->XDisplay, Device->XWindow, &DeviceId);\r
+ // XIWarpPointer is entirely broken on multi-head setups (see also [1]),\r
+ // but behaves better in other cases so we can't just disable it outright.\r
+ // [1] https://developer.blender.org/rB165caafb99c6846e53d11c4e966990aaffc06cea\r
+ if (XScreenCount(Device->XDisplay) > 1)\r
+ {\r
+ os::Printer::log("Detected classic multi-head setup, not using XIWarpPointer");\r
+ }\r
+ else\r
+ {\r
+ XIGetClientPointer(Device->XDisplay, Device->XWindow, &DeviceId);\r
+ }\r
#endif\r
\r
XGCValues values;\r