Comment 145 for bug 296167

Revision history for this message
Travis Hegner (thegner) wrote :

Nice work narrowing this down everyone!

I wanted to comment that even though I can no longer trigger the bug through "normal" usage (with the exception of opengl games), I CAN still trigger the bug with the xte "mousemove" commands. As is true for everyone else, You must move the cursor off of the screen you jump to in order to trigger the bug, and to re-sync the cursor, you must move it off of screen 0, then 'jump' it somewhere on to screen 0.

I have also noticed that when the mouse becomes disconnected by jumping it to another screen, the cursor goes where I initially put it, but when I begin moving it from it's new location, it jumps itself to the coordinates on the new screen, which were the coordinates on the old screen before I manually jumped it. I hope that makes sense.

For Instance:
I (manually) move the cursor to 1670, 1000 on screen1, then run xte to jump it to -1000, 10 (which is roughly 680, 10 on screen2). The cursor shows up at the coordinates that I told xte to put it, but when I begin to move the mouse, it jumps again on it's own to 1670, 1000 on screen2, and the bug is triggered. Now if I run xte to jump it to 10, 10 on screen0, it goes there, and when I begin to move the mouse, it jumps on it's own back to 1670, 1000 on screen0, and the cursor is restored to normal.

It seems that somewhere a function is not updating the new location information of the cursor, and the program with the old location is not multi-screen aware, it only knows the relative coordinates at "this" screen and puts the cursor back to that location when called. So long as the cursor doesn't leave the screen with a jump, the bug is not triggered.

Another oddity about my system, which is perhaps normal as I've never used xte before, my server layout is:
Section "ServerLayout"
    Identifier "Layout0"
    Screen 0 "Screen0" 1680 0
    Screen 1 "Screen1" 3360 0
    Screen 2 "Screen2" 0 0
    Screen 3 "Screen3" 5040 13
    InputDevice "Keyboard0" "CoreKeyboard"
    InputDevice "Mouse0" "CorePointer"
EndSection
(I have added a fourth screen to my original specs way, way above)
so you would expect xte "mousemove 1680 0" to put the cursor at upper left on screen0 but it does not. xte says 0, 0 is at upper left on screen0, and screen2's (left of screen0) upper left is at -1680, 0. This may be normal, i don't know.

Thanks again everyone!