[PATCH] mi: don't call UpdateSpriteForScreen if we have Xinerama enabled. #18668

Peter Hutterer peter.hutterer at who-t.net
Sun Feb 1 16:26:49 PST 2009

In Xinerama all windows hang off the first root window. Crossing the screens
must not reset the spriteTrace, otherwise picking fails and events are sent to
the root window.

X.Org Bug 18668 <http://bugs.freedesktop.org/show_bug.cgi?id=18668>

Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

Long standing bug affecting Xinerama users. After a WarpPointer request
to a screen n+1 the pointer ends up sending events to the screen's root
With Xinerama enabled, the mouse is still moving but cannot interact with apps
anymore. Only by issuing another WarpPointer request onto screen 0 is the
proper functionality restored.

 mi/mipointer.c |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/mi/mipointer.c b/mi/mipointer.c
index d520281..e3a4656 100644
--- a/mi/mipointer.c
+++ b/mi/mipointer.c
@@ -332,7 +332,14 @@ miPointerWarpCursor (DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y)
 	pPointer->pScreen = pScreen;
-    if (changedScreen)
+    /* Don't call USFS if we use Xinerama, otherwise the root window is
+     * updated to the second screen, and we never receive any events.
+     * (FDO bug #18668) */
+    if (changedScreen
+            && noPanoramiXExtension
+       )
         UpdateSpriteForScreen (pDev, pScreen) ;

More information about the xorg mailing list