Mouse jumps monitors on middle button release
Open, ConfirmedPublic

Description

System Information
Ubuntu 16.10 amd64
2x GT-610 with CUDA (4 monitors)

Blender Version
Broken: 2.78a
Worked: 2.77

When manipulating the 3D view with the middle mouse button, upon releasing the middle button the mouse jumps to a different screen than where I was working. Which screen the mouse jumps to is dependant on which screen Blender is running in. It only seems to happen on monitors connected to GPU-0 - if I run Blender on the other monitors on GPU-1 it is fine.

Exact steps for others to reproduce the error
I guess to replicate it you will need a dual-card quad display NVidia system. No special .blend file is needed - the default startup file is enough.

Details

Type
Bug

Just signed up to confirm this bug.

Also happens while grab/release objects with right-click

System: Debian Stretch amd64
1x GeForce GTX 770 (3-monitor setup)

tested on LXDE and XFCE

This also occurs on FreeBSD running KDE.

I wasn't able to recreate this (tried with GNOME 3 and LXDE) but I also only got a single GPU system to test. @Campbell Barton (campbellbarton) or @Brecht Van Lommel (brecht) would be other candidates for fixing this, maybe you can recreate it?

Just to be clear, this happens with factory settings too? And it's fine with 2.77 (report says so, but would be good to get it confirmed by others)?

Un-assigning myself as I'm not able to recreate the issue.

@Julian Eisel (Severin) Yes, this worked on 2.77 and stopped working as of 2.78a (also fails in 2.78c.) My configuration if it matters for testing: 2 adapters, 3 monitors, first card drives center monitor and second card drives left+right monitors. All my tests used factory settings, it has to be something which changed for 2.78.

I don't have multiple monitors to test this, but some notes.

If it broke between 2.77 and 2.78, then rB7065022f7aa2: Fix T48901: Blender ignores xinput cursor matrix might be the cause.

This libXi bug report may also be related. The man page say that "XIWarpPointer is identical to XWarpPointer but specifies the device explicitly", but perhaps there is a bug in the implementation?

CoryG (CoryG) added a comment.EditedSat, Apr 22, 12:11 AM

@Brecht Van Lommel (brecht) I tend to suspect it couldn't be an implementation issue in the OS but within Blender (the first guy who reported it was using Ubuntu, another experienced it on Debian and I'm seeing it on FreeBSD.)

The libxi/xorg implementation is the same on all those operating systems. We'll have to see if there is actually a bug there, it's just something we have to consider given how simple change the from XWarpPointer to XIWarpPointer is and the fact that this is a rarely used function which will not have been tested much.

@Brecht Van Lommel (brecht) What operating systems use the implementation it works on?

I don't know if works anywhere, just that all the OSes tested use the same xorg-server code. In the implemention of XIWarpPointer we find this comment, indicating Xinerama (a.k.a. Panoramix) multi-monitor support is missing.

/* FIXME: panoramix stuff is missing, look at ProcWarpPointer */

Not sure what the right solution is on the Blender side, if there is another way to fix T48901 without using XIWarpPointer, perhaps by applying the transform manually. If we can't solve both then multi-monitor support seems more important to me.