Testing with 0.15.5 r10308 osx client against 0.15.4 r10209 fedora 21 server... and also reproduced with 0.16.0 r10380 osx client against 0.16.0 r10508 fedora 21 server.
I started a gedit
application from an xterm (obviously also reproducible with all browsers).
I typed something into the doc, then clicked the "+" button to open a new doc and typed something-else into it.
I then plug in a second display configured to be "left" (and above) the original display... requiring, I assume, a "re-location" of the application in order to keep it on the same display as before, despite the changes of the overall desktop layout.
When I then mouse to the original tab/doc (the one I typed something into) and click on it, the application is non-responsive ... and I can't use the mouse to switch between tabs as expected.
(Note - with browsers that behave in cooperation with the WM, if I move the application to the left-more display, then the tabs become responsive again... but gedit and google-chrome are not behaving, so I can't move them around the desktop... which is a separate issue, but I thought I would note it here.)
I'll attach xpra-info from before the adding of the second display, and after.
info for multi-tab gedit application before adding second display
info for multi-tab gedit application after adding second display
Display output (server side with 0.15.4) from initial connection and then once the second display is added:
2015-09-08 17:14:51,704 server virtual display now set to 1680x1050 2015-09-08 17:14:51,705 received updated display dimensions 2015-09-08 17:14:51,705 client root window size is 1680x1050 with 1 displays: 2015-09-08 17:14:51,706 'schadenfreude.local' (592x370 mm - DPI: 72x72) 2015-09-08 17:14:51,706 monitor 1 2015-09-08 17:14:51,723 DPI set to 72 x 72 2015-09-08 17:14:51,726 sent updated screen size to 1 clients: 1680x1050 (max 8192x4096) 2015-09-08 17:15:37,621 server virtual display now set to 3000x2560 (best match for 2960x2490) 2015-09-08 17:15:37,622 received updated display dimensions 2015-09-08 17:15:37,622 client root window size is 2960x2490 with 1 displays: 2015-09-08 17:15:37,622 'schadenfreude.local' (1044x878 mm - DPI: 72x72) 2015-09-08 17:15:37,622 monitor 1 1680x1050 at 1280x1440 (592x370 mm - DPI: 72x72) 2015-09-08 17:15:37,622 monitor 2 2560x1440 (903x508 mm - DPI: 72x72) 2015-09-08 17:15:37,626 DPI set to 72 x 72 2015-09-08 17:15:37,631 sent updated screen size to 1 clients: 3000x2560 (max 8192x4096)
Will also add a screenshot of the display configuration (the larger top-left is the one I add as a second display).
shot of display configuration
libfakeXinerama
- what makes you think that this is relevant? Have you tried running with --libfakeXinerama=no
?
xdpyinfo
and xrandr
command output, the Xorg server log file
Could be related to #349 and #728, see also #601.
FYI: I don't have the hardware to test multiple monitors from my win32 and osx systems yet..
Assuming that the problem is to do with a missing notification from the OS that the window's coordinates have changed - r10572 allows us to force all windows to be re-initialized after every desktop geometry change:
XPRA_MONITOR_CHANGE_REINIT=1 xpra attach ...
If that fixes the problem we can make it the default for the platforms affected (I doubt X11 is).
Setting XPRA_MONITOR_CHANGE_REINIT=1 xpra attach ...
with 0.16.0 r10607 windows client and fedora 21 server - after adding a second display the applications with "tabs" (firefox with 3 tabs, gedit with 2 unsaved documents arranged in a tab-like pattern of display) the "tabs" are still clickable/navigable as expected.
However, it looks like all the start-child and start-child spawned windows are shifting left as I add a new display which is configured to be left of the initial display.
I'll attach screen shots and a shot of the control center display layout. (The tiny display to the left is the one being added as a second display - and likewise, in the above layout, the large display at top and slightly left-er is the second display that was added.)
I'll also attach new xpra info from before and after, as well as a number of the bug report items. Note, however, that the screenshots taken by the bug report tool came out as 1 kb .txt files with the word width
as their sole contents.
Just in case it is useful, here's the layout infor from the win32 client for the initial connection (well, for one of the iterations in which it re-init'd to one display):
2015-09-10 16:10:36,579 screen size change: will reinit the windows 2015-09-10 16:12:09,306 sending updated screen size to server: 3840x2160 with 1 screens 2015-09-10 16:12:09,306 Default (1016x571 mm - DPI: 96x96) workarea: 3840x2120 2015-09-10 16:12:09,306 DISPLAY1 (621x341 mm - DPI: 157x160) 2015-09-10 16:12:09,306 screen size change: will reinit the windows
And, upon re-connecting the second display yet again:
2015-09-10 16:19:34,377 sending updated screen size to server: 5120x2160 with 1 screens 2015-09-10 16:19:34,377 Default (1354x571 mm - DPI: 96x96) 2015-09-10 16:19:34,377 DISPLAY1 3840x2160 at 1280x0 (621x341 mm - DPI: 157x160) workarea: 5120x2160 2015-09-10 16:19:34,377 DISPLAY2 1280x720 (597x336 mm - DPI: 54x54) workarea: 5120x2160 2015-09-10 16:19:34,391 screen size change: will reinit the windows
--libfakeXinerama=no
, but got an error message, both server and client side, when I tried: no such option: --libfakeXinerama
screenshot of windows display layout, big 4K is initial display, little upper left display added as second
edited to maybe fit screenshot of 4k display and application locations before adding second display
screenshot, edited for size, of 4k display applications layout after adding second little display to left
xpra info pre-attaching of second display
bug tool system info for session, before adding second display (should be same for after?)
xpra info after adding second display left of original 4k, position of applications appear to have changed
Xorg server log after attachment of second display (presumably still relevant even though initial guesses of causes was probably wrong?)
Quick reference shot for layout of this pass (our osx 0.16 build had some issues, so I had to test with slightly different setup than originally shown in ticket):
$ xpra -h | grep xinerama --fake-xinerama=yes|no Setup fake xinerama support for the session. Default:
Editing the ticket title and summarizing some information missing from the latest comments:
The better fix done in r10608 (suitable for 0.15.x branch and actually smaller than r10572) is to force the window to tell the server about its new relative location. Tested with virtualbox and this seems to work for me.
Note: because of the way we process screen change events, there will be a delay of 1 second between the time we are notified of the change in geometry and the time we send the new window location to the server. Any mouse events received during that time will still land in the wrong location. I don't think this is a huge problem or worth the extra coding effort. This goes up to 5 seconds when this change happens after a suspend + resume cycle (but usually this leads to a dropped connection anyway).
@afarr:
-d geometry
client log (new debug log switch in 0.16 added specifically for window geometry issues)
PS: I want to release a stable update asap (to include the fix for the embarrassing security issue r10598), so I have fast tracked this backport: r10612 applies it to both v0.14.x and v0.15.x. Please confirm that all branches are fixed.
PS2: when a display is added or removed, I see a very noticeable OS message in the client output: unexpected message: WM_MOVE (msdn docs: WM_MOVE message). r10614 catches this event and triggers the same code as the screen-size-change handler, so it should be redundant but avoids the warning. @afarr: You must not be looking at the client console output? and also not using one of the key new features of 0.15: remote logging (#786). This means missing out on many important issues that will only show up in the log output, ouch. I can spend weeks at a time improving the logging and error reporting, but if you don't even look at it, that is time completely wasted.
Tested with 0.16.0 r10624 client against 0.16.0 r10621 fedora 21 client.
I am using windows 8.1 (and osx 10.9) to test with... in neither case am I seeing unexpected message: WM_MOVE in console output, neither before nor after connecting/disconnecting a second display. Are you perhaps using a different windows (maybe 10?). I have also switched my old default screen background, which used to give a host of unexpected messages... was that perhaps happening in the middle of your tests?
This is the output I get with the windows 0.16.0 r10624 client with -d geometry:
C:\Program Files (x86)\Xpra>xpra_cmd.exe attach tcp:10.0.32.147:2200 -d geometry 2015-09-11 14:32:25,326 xpra gtk2 client version 0.16.0-r10624 2015-09-11 14:32:26,091 OpenGL_accelerate module loaded 2015-09-11 14:32:26,207 detected keyboard: layout=us 2015-09-11 14:32:26,207 desktop size is 3840x2160 with 1 screen(s): 2015-09-11 14:32:26,209 Default (1016x571 mm - DPI: 96x96) workarea: 3840x2120 2015-09-11 14:32:26,209 DISPLAY1 (621x341 mm - DPI: 157x160) 2015-09-11 14:32:26,344 server: Linux Fedora 21 Twenty One, Xpra version 0.16.0-r10621 2015-09-11 14:32:26,375 Attached to tcp:10.0.32.147:2200 (press Control-C to detach) 2015-09-11 14:32:26,469 ['configure-window', 1, 8, 44, 499, 316, {'screen': 0, 'encoding.transparency': False, 'encodings.rgb_formats': ['YUV420P', 'YUV422P', 'YUV444P', 'GBRP', 'BGRA', 'BGRX', 'RGBA', 'RGBX', 'RGB', 'BGR']}, 0, {}, False, 1, (2186, 375), ['mod2']] 2015-09-11 14:32:26,469 map-window for wid=1 with client props={}, state={'frame': (8, 8, 31, 8)} 2015-09-11 14:32:26,469 ['configure-window', 1, 8, 44, 499, 316, {'screen': 0}, 0, {}, False, 1, (2186, 375), ['mod2']] 2015-09-11 14:32:26,469 ['configure-window', 2, 8, 44, 1147, 849, {'screen': 0, 'encoding.transparency': False, 'encodings.rgb_formats': ['YUV420P', 'YUV422P', 'YUV444P', 'GBRP', 'BGRA', 'BGRX', 'RGBA', 'RGBX', 'RGB', 'BGR']}, 0, {}, False, 2, (2186, 375), ['mod2']] 2015-09-11 14:32:26,469 map-window for wid=2 with client props={}, state={'frame': (8, 8, 31, 8)} 2015-09-11 14:32:26,469 ['configure-window', 2, 8, 44, 1147, 849, {'screen': 0}, 0, {}, False, 2, (2186, 375), ['mod2']] 2015-09-11 14:32:26,469 ['configure-window', 3, 530, 567, 1150, 851, {'screen': 0, 'encoding.transparency': False, 'encodings.rgb_formats': ['YUV420P', 'YUV422P', 'YUV444P', 'GBRP', 'BGRA', 'BGRX', 'RGBA', 'RGBX', 'RGB', 'BGR']}, 0, {}, False, 3, (2186, 375), ['mod2']] 2015-09-11 14:32:26,469 map-window for wid=3 with client props={}, state={'frame': (8, 8, 31, 8)} 2015-09-11 14:32:26,469 ['configure-window', 3, 530, 567, 1150, 851, {'screen': 0}, 0, {}, False, 3, (2186, 375), ['mod2']] 2015-09-11 14:32:27,578 sound-sink using audio codec: MPEG 1 Audio, Layer 3 (MP3) 2015-09-11 14:32:41,460 sending updated screen size to server: 5120x2160 with 1 screens 2015-09-11 14:32:41,460 Default (1354x571 mm - DPI: 96x96) workarea: 5120x2120 2015-09-11 14:32:41,460 DISPLAY1 3840x2160 at 1280x0 (621x341 mm - DPI: 157x160) workarea: 5120x2120 2015-09-11 14:32:41,460 DISPLAY2 1280x720 (597x336 mm - DPI: 54x54) workarea: 5120x2120
With r10607:
C:\Program Files (x86)\Xpra>xpra_cmd.exe attach tcp:10.0.32.147:2200 -d geometry 2015-09-11 14:46:45,838 xpra gtk2 client version 0.16.0-r10607 2015-09-11 14:46:46,805 OpenGL_accelerate module loaded 2015-09-11 14:46:46,914 detected keyboard: layout=us 2015-09-11 14:46:46,914 desktop size is 3840x2160 with 1 screen(s): 2015-09-11 14:46:46,914 Default (1016x571 mm - DPI: 96x96) workarea: 3840x2120 2015-09-11 14:46:46,914 DISPLAY1 (621x341 mm - DPI: 157x160) 2015-09-11 14:46:47,102 server: Linux Fedora 21 Twenty One, Xpra version 0.16.0-r10621 2015-09-11 14:46:47,134 Attached to tcp:10.0.32.147:2200 (press Control-C to detach) 2015-09-11 14:46:47,227 ['configure-window', 1, 8, 382, 499, 316, {'screen': 0, 'encoding.transparency': False, 'encodings.rgb_formats': ['YUV420P', 'YUV422P', 'YUV4 44P', 'GBRP', 'BGRA', 'BGRX', 'RGBA', 'RGBX', 'RGB', 'BGR']}, 0, {}, False, 1, (1920, 1080), ['mod2']] 2015-09-11 14:46:47,227 map-window for wid=1 with client props={}, state={'frame': (8, 8, 31, 8)} 2015-09-11 14:46:47,227 ['configure-window', 1, 8, 382, 499, 316, {'screen': 0}, 0, {}, False, 1, (1920, 1080), ['mod2']] 2015-09-11 14:46:47,227 map-window for wid=2 with client props={'screen': 0, 'encoding.transparency': False, 'encodings.rgb_formats': ['YUV420P', 'YUV422P', 'YUV444P ', 'GBRP', 'BGRA', 'BGRX', 'RGBA', 'RGBX', 'RGB', 'BGR']}, state={'frame': (8, 8, 31, 8)} 2015-09-11 14:46:47,227 ['configure-window', 2, 8, 31, 1147, 849, {'screen': 0}, 0, {}, False, 2, (1920, 1080), ['mod2']] 2015-09-11 14:46:47,227 ['configure-window', 3, 1288, 545, 1150, 851, {'screen': 0, 'encoding.transparency': False, 'encodings.rgb_formats': ['YUV420P', 'YUV422P', ' YUV444P', 'GBRP', 'BGRA', 'BGRX', 'RGBA', 'RGBX', 'RGB', 'BGR']}, 0, {}, False, 3, (1920, 1080), ['mod2']] 2015-09-11 14:46:47,227 map-window for wid=3 with client props={}, state={'frame': (8, 8, 31, 8)} 2015-09-11 14:46:47,227 ['configure-window', 3, 1288, 545, 1150, 851, {'screen': 0}, 0, {}, False, 3, (1920, 1080), ['mod2']] 2015-09-11 14:46:48,197 sound-sink using audio codec: MPEG 1 Audio, Layer 3 (MP3) 2015-09-11 14:46:59,092 sending updated screen size to server: 5120x2160 with 1 screens 2015-09-11 14:46:59,092 Default (1354x571 mm - DPI: 96x96) workarea: 5120x2128 2015-09-11 14:46:59,092 DISPLAY1 3840x2160 at 1280x0 (621x341 mm - DPI: 157x160) workarea: 5120x2128 2015-09-11 14:46:59,092 DISPLAY2 1280x720 (597x336 mm - DPI: 54x54) workarea: 5120x2128 2015-09-11 14:47:15,690 sending updated screen size to server: 3840x2160 with 1 screens 2015-09-11 14:47:15,690 Default (1016x571 mm - DPI: 96x96) workarea: 3840x2120 2015-09-11 14:47:15,690 DISPLAY1 (621x341 mm - DPI: 157x160)
With r10556:
C:\Program Files (x86)\Xpra>xpra_cmd.exe attach tcp:10.0.32.147:2200 -d geometry 2015-09-11 14:50:02,372 xpra gtk2 client version 0.16.0-r10556 2015-09-11 14:50:03,430 OpenGL_accelerate module loaded 2015-09-11 14:50:03,555 detected keyboard: layout=us 2015-09-11 14:50:03,555 desktop size is 3840x2160 with 1 screen(s): 2015-09-11 14:50:03,555 Default (1016x571 mm - DPI: 96x96) workarea: 3840x2120 2015-09-11 14:50:03,555 DISPLAY1 (621x341 mm - DPI: 157x160) 2015-09-11 14:50:03,677 server: Linux Fedora 21 Twenty One, Xpra version 0.16.0-r10621 2015-09-11 14:50:03,684 Attached to tcp:10.0.32.147:2200 (press Control-C to detach) 2015-09-11 14:50:03,763 ['configure-window', 1, 8, 382, 499, 316, {'screen': 0, 'encoding.transparency': False, 'encodings.rgb_formats': ['YUV420P', 'YUV422P', 'YUV4 44P', 'GBRP', 'BGRA', 'BGRX', 'RGBA', 'RGBX', 'RGB', 'BGR']}, 0, {}, False, 1, (1723, 508), ['mod2']] 2015-09-11 14:50:03,763 map-window for wid=1 with client props={}, state={'frame': (8, 8, 31, 8)} 2015-09-11 14:50:03,763 ['configure-window', 1, 8, 382, 499, 316, {'screen': 0}, 0, {}, False, 1, (1723, 508), ['mod2']] 2015-09-11 14:50:03,779 map-window for wid=2 with client props={'screen': 0, 'encoding.transparency': False, 'encodings.rgb_formats': ['YUV420P', 'YUV422P', 'YUV444P ', 'GBRP', 'BGRA', 'BGRX', 'RGBA', 'RGBX', 'RGB', 'BGR']}, state={'frame': (8, 8, 31, 8)} 2015-09-11 14:50:03,779 ['configure-window', 2, 8, 31, 1147, 849, {'screen': 0}, 0, {}, False, 2, (1723, 508), ['mod2']] 2015-09-11 14:50:03,779 ['configure-window', 3, 1288, 545, 1150, 851, {'screen': 0, 'encoding.transparency': False, 'encodings.rgb_formats': ['YUV420P', 'YUV422P', ' YUV444P', 'GBRP', 'BGRA', 'BGRX', 'RGBA', 'RGBX', 'RGB', 'BGR']}, 0, {}, False, 3, (1723, 508), ['mod2']] 2015-09-11 14:50:03,779 map-window for wid=3 with client props={}, state={'frame': (8, 8, 31, 8)} 2015-09-11 14:50:03,779 ['configure-window', 3, 1288, 545, 1150, 851, {'screen': 0}, 0, {}, False, 3, (1723, 508), ['mod2']] 2015-09-11 14:50:04,779 sound-sink using audio codec: MPEG 1 Audio, Layer 3 (MP3) 2015-09-11 14:50:15,727 sending updated screen size to server: 5120x2160 with 1 screens 2015-09-11 14:50:15,730 Default (1354x571 mm - DPI: 96x96) 2015-09-11 14:50:15,732 DISPLAY1 3840x2160 at 1280x0 (621x341 mm - DPI: 157x160) workarea: 5120x2160 2015-09-11 14:50:15,733 DISPLAY2 1280x720 (597x336 mm - DPI: 54x54) workarea: 5120x2160
These are all with the previously shown windows display configuration.
I will post more with the earlier branch tests when I get a chance.
Tested with windows and osx 0.14.30 r10624 clients against 0.14.30 r10624 fedora 21 server.
The applications were non-responsive to mouse clicks after a second display was added, becoming responsive again after the new display was again removed.
Obviously, the -d geometry
flag didn't produce any output, but I did see some interesting gtk warnings with the window client (not sure if it was just about the build or something related to the r10624...):
C:\Program Files (x86)\Xpra>xpra_cmd.exe attach tcp:10.0.32.147:2200 -d geometry 2015-09-11 17:11:31,855 xpra client version 0.14.30 2015-09-11 17:11:32,321 OpenGL_accelerate module loaded 2015-09-11 17:11:32,321 Using accelerated ArrayDatatype 2015-09-11 17:11:32,430 detected keyboard: layout=us 2015-09-11 17:11:32,430 desktop size is 3840x2160 with 1 screen(s): 2015-09-11 17:11:32,430 '1\WinSta-Default' (1016x571 mm) 2015-09-11 17:11:32,430 DISPLAY1 (621x341 mm) 2015-09-11 17:11:32,632 server: Linux Fedora 21 Twenty One, Xpra version 0.14.30 (r10624) 2015-09-11 17:11:32,710 Attached to tcp:10.0.32.147:2200 (press Control-C to detach) 2015-09-11 17:11:34,349 using audio codec: MPEG 1 Audio, Layer 3 (MP3) 2015-09-11 17:13:11,233 sending updated screen size to server: 5120x2160 with 1 screens 2015-09-11 17:13:11,233 '1\WinSta-Default' (1354x571 mm) 2015-09-11 17:13:11,233 DISPLAY1 3840x2160 at 1280x0 (621x341 mm) 2015-09-11 17:13:11,233 DISPLAY2 1280x720 (597x336 mm) 2015-09-11 17:14:00,167 received console event CTRL_C C:\Program Files (x86)\Xpra\library.zip\xpra\client\gtk2\client.py:527: GtkWarning: gdk_window_set_group not implemented C:\Program Files (x86)\Xpra\library.zip\xpra\client\gtk_base\gtk_client_window_base.py:196: GtkWarning: gdk_window_set_group not implemented
The OSX client had no interesting output.
in neither case am I seeing unexpected message: WM_MOVE in console output
As per comment:9: r10614 catches this event and triggers the same code as the screen-size-change handler, so it should be redundant but avoids the warning.
You should be able to see it with -d win32
. I see it reliably with XP and win7.
I did see some interesting gtk warnings with the window client
GtkWarning: gdk_window_set_group not implemented
See ticket:799#comment:12. Now backported to v0.14.x in r10629.
The Windows client, however, still has applications that are not responsive to mouse clicks
Are you sure that your environment is clean?
I don't see how it is possible to detect the screen change and not get new configure events sent. I have tested again every version, and I get the configure packets every time. (easy to spot with -d geometry
on the server)
As of r10630, you can get more diagnostics with -d screen,geometry
client side too.
Well, I am now completely confused.
I double checked, and I am still not seeing WM_MOVE, though with -d win32
I am seeing a whole lot of WM_DISPLAYCHANGE, WM_WINDOWPOSCHANGING, etc.
What's really baffling though, is that using the same client and the same server, it looks like the application windows now ARE respecting mouse/cursor click events.
Maybe my environment was dirtier than I thought (the only cleaning I did was to finally do a windows update that the machine was nagging about for... over a week?).
I've just gone through it half a dozen times... and it worked everytime. Looks like 0.16.0 r10624 client side and 0.16.0 r10621 server side was sufficient after all.
I'll pass this back to you to shake your head over, and then close.
(Also confirmed working with 0.15.6 r10632 win client v. 0.15.6 r10639 fedora 21 server, and 0.14.30 r10632 server and windows client.)
WM_DISPLAYCHANGE
is already caught by GTK for us, so not going to bother with it.
Closing.
Ok, looks like I either have more gremlins in my systems, or my head.
Testing again I'm seeing this issue isn't fixed with OSX in either the 0.15 or 0.16 branches. (I could swear it was...)
Testing with 0.16.0 r10655 osx client against 0.16.0 r10624 fedora 21 server.
Got the following client side with -d geometry
(connect, click on firefox window, add display, osx config listed well above, then click on firefox window some more):
2015-09-17 20:04:40,128 xpra gtk2 client version 0.16.0-r10655 2015-09-17 20:04:40,915 Warning: libvpx ABI version 5 is too old: 2015-09-17 20:04:40,915 disabling YUV444P support with VP9 2015-09-17 20:04:41,310 OpenGL_accelerate module loaded 2015-09-17 20:04:41,589 using default keyboard settings 2015-09-17 20:04:41,896 desktop size is 1680x1050 with 1 screen(s): 2015-09-17 20:04:41,897 schadenfreude.local (592x370 mm - DPI: 72x72) 2015-09-17 20:04:41,897 monitor 1 2015-09-17 20:04:42,038 server: Linux Fedora 21 Twenty One, Xpra version 0.16.0-r10624 2015-09-17 20:04:42,045 no UI watcher available, cannot watch for clipboard events 2015-09-17 20:04:42,055 Attached to tcp:10.0.32.136:2200 (press Control-C to detach) 2015-09-17 20:04:42,165 ['configure-window', 1, 1181, 730, 499, 316, {'screen': 0, 'encoding.transparency': False, 'encodings.rgb_formats': ['YUV420P', 'YUV422P', 'YUV444P', 'GBRP', 'BGRA', 'BGRX', 'RGBA', 'RGBX', 'RGB', 'BGR']}, 0, {}, False, 1, (45, 269), ['mod2']] 2015-09-17 20:04:42,166 ['configure-window', 1, 1181, 730, 499, 316, {}, 0, {}, False, 1, (45, 269), ['mod2']] 2015-09-17 20:04:42,168 map-window for wid=1 with client props={}, state={'frame': (0, 0, 22, 0)} 2015-09-17 20:04:42,168 ['configure-window', 2, 1181, 730, 499, 316, {'screen': 0, 'encoding.transparency': False, 'encodings.rgb_formats': ['YUV420P', 'YUV422P', 'YUV444P', 'GBRP', 'BGRA', 'BGRX', 'RGBA', 'RGBX', 'RGB', 'BGR']}, 0, {}, False, 2, (45, 269), ['mod2']] 2015-09-17 20:04:42,169 ['configure-window', 2, 1181, 730, 499, 316, {}, 0, {}, False, 2, (45, 269), ['mod2']] 2015-09-17 20:04:42,169 map-window for wid=2 with client props={}, state={'frame': (0, 0, 22, 0)} 2015-09-17 20:04:42,170 ['configure-window', 3, 460, 214, 1220, 832, {'screen': 0, 'encoding.transparency': False, 'encodings.rgb_formats': ['YUV420P', 'YUV422P', 'YUV444P', 'GBRP', 'BGRA', 'BGRX', 'RGBA', 'RGBX', 'RGB', 'BGR']}, 0, {}, False, 3, (45, 269), ['mod2']] 2015-09-17 20:04:42,170 ['configure-window', 3, 460, 214, 1220, 832, {}, 0, {}, False, 3, (45, 269), ['mod2']] 2015-09-17 20:04:42,171 map-window for wid=3 with client props={}, state={'frame': (0, 0, 22, 0)} 2015-09-17 20:04:42,804 sound-sink using audio codec: MPEG 1 Audio, Layer 3 (MP3)[0m 2015-09-17 20:04:48,272 ['configure-window', 3, 190, 186, 1220, 832, {'screen': 0}, 0, {}, False, 3, (585, 173), ['mod2']] 2015-09-17 20:04:48,629 ['configure-window', 3, 195, 186, 1220, 832, {'screen': 0}, 0, {}, False, 3, (590, 173), ['mod2']] 2015-09-17 20:04:52,367 ['configure-window', 3, -15, 109, 1220, 832, {'screen': 0}, 0, {}, False, 3, (380, 96), ['mod2']] 2015-09-17 20:04:53,588 ['configure-window', 3, 122, 66, 1220, 832, {'screen': 0}, 0, {}, False, 3, (518, 54), ['mod2']] 2015-09-17 20:04:53,890 ['configure-window', 3, 124, 60, 1220, 832, {'screen': 0}, 0, {}, False, 3, (520, 48), ['mod2']] 2015-09-17 20:04:54,203 ['configure-window', 3, 127, 67, 1220, 832, {'screen': 0}, 0, {}, False, 3, (522, 54), ['mod2']] 2015-09-17 20:04:54,831 ['configure-window', 3, 127, 68, 1220, 832, {'screen': 0}, 0, {}, False, 3, (522, 55), ['mod2']] 2015-09-17 20:05:14,627 ['configure-window', 3, 321, 380, 1220, 832, {'screen': 0}, 0, {}, False, 3, (933, 366), ['mod2']] 2015-09-17 20:05:15,371 ['configure-window', 3, 43, 621, 1220, 832, {'screen': 0}, 0, {}, False, 3, (654, 607), ['mod2']] 2015-09-17 20:05:15,868 ['configure-window', 3, 94, 1007, 1220, 832, {'screen': 0}, 0, {}, False, 3, (706, 993), ['mod2']] 2015-09-17 20:05:16,654 ['configure-window', 3, 150, 661, 1220, 832, {'screen': 0}, 0, {}, False, 3, (762, 646), ['mod2']] 2015-09-17 20:05:17,333 ['configure-window', 3, 176, 338, 1220, 832, {'screen': 0}, 0, {}, False, 3, (788, 324), ['mod2']] 2015-09-17 20:05:18,161 ['configure-window', 3, 150, 183, 1220, 832, {'screen': 0}, 0, {}, False, 3, (762, 169), ['mod2']] 2015-09-17 20:05:19,133 ['configure-window', 3, 61, 82, 1220, 832, {'screen': 0}, 0, {}, False, 3, (673, 68), ['mod2']] 2015-09-17 20:05:25,334 ['configure-window', 2, 1200, 556, 499, 316, {'screen': 0}, 0, {}, False, 2, (1318, 549), ['mod1', 'mod2']] 2015-09-17 20:05:25,892 ['configure-window', 2, 1172, 518, 499, 316, {'screen': 0}, 0, {}, False, 2, (1291, 512), ['mod1', 'mod2']] 2015-09-17 20:06:01,744 sending updated screen size to server: 2960x2490 with 1 screens 2015-09-17 20:06:01,744 schadenfreude.local (1044x878 mm - DPI: 72x72) 2015-09-17 20:06:01,744 monitor 1 1680x1050 at 1280x1440 (592x370 mm - DPI: 72x72) 2015-09-17 20:06:01,745 monitor 2 2560x1440 (903x508 mm - DPI: 72x72) 2015-09-17 20:06:01,745 screen size change: will reinit the windows 2015-09-17 20:06:01,745 ['configure-window', 1, 2461, 2170, 499, 316, {'screen': 0}, 0, {}, False, 3, (1892, 1528), ['mod1', 'mod2']] 2015-09-17 20:06:01,745 ['configure-window', 2, 2452, 1958, 499, 316, {'screen': 0}, 0, {}, False, 3, (1892, 1528), ['mod1', 'mod2']] 2015-09-17 20:06:01,745 ['configure-window', 3, 1341, 1522, 1220, 832, {'screen': 0}, 0, {}, False, 3, (1892, 1528), ['mod1', 'mod2']]
The xrandr output seems to be somewhat long columns of numbers apt to clutter the ticket, so I'll just attach a pre- (from before the second display is connected) and a post- (from after, surprisingly enough).
Behavior was the same with 0.15.6 r10632.
xrandr output, previous to adding second display
xrandr output, post adding second display
Where was monitor 2 supposed to be added relative to monitor 1? Is this supposed to be the same layout as comment:2 with monitor 2 on top?
sending updated screen size to server: 2960x2490 with 1 screens schadenfreude.local (1044x878 mm - DPI: 72x72) monitor 1 1680x1050 at 1280x1440 (592x370 mm - DPI: 72x72) monitor 2 2560x1440 (903x508 mm - DPI: 72x72)
This says monitor 1 is now below and to the right of monitor 2, starting half way across. (it starts at 1280x1440)
The total screen size also looks that way: the width is 2960=1280+1680, the height is 2490=1050+1440. At least that's consistent.
This would definitely cause problems if we later send mouse coordinates that are based on the monitors NOT actually being arranged that way.
I assume the window you use for testing is number 3? It is reported as being located at 1341x1522, which is exactly where it was before (61x82) if you shift it by 1280x1440. Which looks right - assuming the monitor size and position detection is correct.
The xrandr output also looks correct.
Does moving or resizing the window fix things? Does focusing the window in/out help? (there are some known focus issues with GTK on osx)
no UI watcher available, cannot watch for clipboard events
Fixed in r10664.
You were exactly correct, the setup from comment:2. The lower & right-er display is the laptop main display, the upper-er and left-er is an external display that I am connecting/disconnecting. Since I am spawning two xterms as start-childs, I am presuming that window 3 would be the one I'm testing with.
Moving the window does not help, unless I move the window all the way to the other display - at which point the window interacts with the mouse/cursor as expected. Resizing also doesn't help.
Neitherwise does focusing in/out/in/out help... nor mixing in focus changes between various of my three xpra windows (xterms v. firefox v. other xterms).
Double checked all of the above on 0.15.6 r10632 as well.
Just on the off chance there might be something interesting, I'll attach a client log (0.15.6 r10632) with -d geometry,window
that includes not only the connection of the new display, but also then moving the window to the new display, at which point the mouse/cursor interactions work again as expected.
client logs, attach second monitor (layout as in comment:2), then move to new display
Well... turns out that the windows fix is also not-so-fixed, if I reverse the display set up and repeat my tests from before.
Using the setup from comment:6 (with 0.16.0 r10655 win client) - if I connect with only the left-most (tiny) display and only after initiating the session, connect the 4k display on the right, then the mouse clicks are not registered on the windows, resizing doesn't help, and neither does shifting focus in/out.
Interestingly, when I do the test that way, upon connecting the significantly larger display right of the original display, the application windows all "jump" to the newly connected display, in addition to becoming non-responsive to the mouse/cursor.
If I then move the windows back to the tiny right-most display, then the mouse/cursor clicks work as expected.
(Likewise, as long as I'm just connecting/disconnecting the left-most display, the mouse/cursor clicks work as expected no matter how many connections/disconnections occur.)
I grabbed similar client-side logs to the above... -d geometry,window
from connection, adding the second display (at which point the windows all "jump" to the added right-most display), clicking on the windows, then moving the windows back to the "original" right-most display (where the clicks again work as expected). Attaching.
title about says it all...
I don't think this is the source of the problem there is an obvious error in your log, which should have been highlighted in red:
Traceback (most recent call last): 88 File "xpra\client\ui_client_base.pyc", line 800, in do_process_screen_size_change 89 File "xpra\client\gtk_base\gtk_client_window_base.pyc", line 861, in send_configure 90 File "xpra\client\gtk_base\gtk_client_window_base.pyc", line 870, in process_configure_event 91 AssertionError
This one is fixed in r10670.
But I fear that the only solution may be to do a full window re-init (same as when we toggle opengl on or off, or when up/down scaling): r10671. If that finally fixes, it will need to be backported to v0.15.x
Tested with 0.16.0 r10673 windows client against 0.16.0 r10624 fedroa 21 server.
comment:6 layout, using the left-most monitor as initial, and then adding the right-most (4K) after starting session. Doesn't seem to be behaving any differently.
Were my guesses of -d geometry,window
something that I should run again? Would some other flags (client or server side) be of more use? (Do I need a more up to date server? As I was taking notes I realized that's mildly old.)
Assigning to you antoine.
I've done extensive testing using a Fedora 22 server running xpra 0.16.0-r11083, with a Windows 7 x86_64 running the same version.
I am testing using a simple xterm and dragging the mouse to see if the mouse click and motion events land in the right place. (until proven otherwise, which applications is used makes no difference at all - and this one is simple). xev
is also quite useful for testing as it shows the mouse events in both relative and absolute coordinates.
I have tried adding and removing the extra monitor:
I have not had a single instance where the mouse events did not get recorded in the correct location.
For debugging (please include both before and after the screen layout changes):
GTK_info.exe
and Native_GUI.exe
output, and look for changes that look out of place (setting XPRA_WIN32_DEBUG=1
shows even more information)
This bug is really... bugging me now.
Tried to get repro steps for OSX client (0.16.0 r11077) against a 0.16.0 r11031 fedora 21 server. I failed. It seems to be solved completely on osx.
Trying on windows (0.16.0 r11074 against the same server as above) - I had almost given up, but then I seem to have stumbled across it.
The secret to repro isn't a 4K monitor, it's the need to connect to the xpra session with a primary monitor disconnected - and after the xpra session has been started, then you have to connect the primary monitor. (Yes, you read that correctly, at this point, as long as a user isn't disconnecting & reconnecting a designated primary monitor on a windows client system, I can't find any repro for this bug.)
That said...
Control Panel\Appearance and Personalization\Display\Screen Resolution
)).
gedit
works well, it has a button to open new tabs).
GTK_info.exe
doesn't have anything that looks glaringly different between to before and after of re-connecting the primary monitor (though, oddly, in both cases there's just a "screen[0]
" and in both case the "screen[0].primary_monitor
" value is "0" (posting the both, in case there's something... ran everything with XPRA_WIN32_DEBUG=1
)).
GTK_info.exe
, only secondary display connected:
GTK Version: * cairo : 1.8.10 * gdk : 2.24.0 * glib : 2.28.8 * gobject : 2.28.3 * gtk : 2.24.10 * pango : 1.29.4 * pyglib : 2.28.3 * pygtk : 2.24.0 Display: * clipboard_persistence : False * composite : False * cursor_alpha : True * cursor_color : True * default_cursor_size : 32 * devices : 1 * devices[0] : Core Pointer * maximal_cursor_size : (32, 32) * name : 1\WinSta0\Default * pointer : (1026, 813) * pointer_is_grabbed : False * screen[0].height : 1080 * screen[0].height_mm : 285 * screen[0].monitor[0].height : 1080 * screen[0].monitor[0].height_mm : 340 * screen[0].monitor[0].plug_name : \\.\DISPLAY1 * screen[0].monitor[0].width : 1920 * screen[0].monitor[0].width_mm : 600 * screen[0].monitor[0].x : 0 * screen[0].monitor[0].y : 0 * screen[0].monitors : 1 * screen[0].name : 1\WinSta0\Default * screen[0].primary_monitor : 0 * screen[0].resolution : -1 * screen[0].rgb.bits_per_rgb : 42 * screen[0].rgb.byte_order : LSB * screen[0].rgb.colormap_size : 256 * screen[0].rgb.depth : 24 * screen[0].rgb.visual_type : TRUE_COLOR * screen[0].system_visual.bits_per_rgb : 42 * screen[0].system_visual.byte_order : LSB * screen[0].system_visual.colormap_size : 256 * screen[0].system_visual.depth : 24 * screen[0].system_visual.visual_type : TRUE_COLOR * screen[0].visuals : 1 * screen[0].width : 1920 * screen[0].width_mm : 508 * screens : 1 * selection_notification : True * shapes : True
GTK Version: * cairo : 1.8.10 * gdk : 2.24.0 * glib : 2.28.8 * gobject : 2.28.3 * gtk : 2.24.10 * pango : 1.29.4 * pyglib : 2.28.3 * pygtk : 2.24.0 Display: * clipboard_persistence : False * composite : False * cursor_alpha : True * cursor_color : True * default_cursor_size : 32 * devices : 1 * devices[0] : Core Pointer * maximal_cursor_size : (32, 32) * name : 1\WinSta0\Default * pointer : (3201, 875) * pointer_is_grabbed : False * screen[0].height : 1440 * screen[0].height_mm : 381 * screen[0].monitor[0].height : 1440 * screen[0].monitor[0].height_mm : 336 * screen[0].monitor[0].plug_name : \\.\DISPLAY1 * screen[0].monitor[0].width : 2560 * screen[0].monitor[0].width_mm : 597 * screen[0].monitor[0].x : 1920 * screen[0].monitor[0].y : 0 * screen[0].monitor[1].height : 1080 * screen[0].monitor[1].height_mm : 340 * screen[0].monitor[1].plug_name : \\.\DISPLAY2 * screen[0].monitor[1].width : 1920 * screen[0].monitor[1].width_mm : 600 * screen[0].monitor[1].x : 0 * screen[0].monitor[1].y : 0 * screen[0].monitors : 2 * screen[0].name : 1\WinSta0\Default * screen[0].primary_monitor : 0 * screen[0].resolution : -1 * screen[0].rgb.bits_per_rgb : 42 * screen[0].rgb.byte_order : LSB * screen[0].rgb.colormap_size : 256 * screen[0].rgb.depth : 24 * screen[0].rgb.visual_type : TRUE_COLOR * screen[0].system_visual.bits_per_rgb : 42 * screen[0].system_visual.byte_order : LSB * screen[0].system_visual.colormap_size : 256 * screen[0].system_visual.depth : 24 * screen[0].system_visual.visual_type : TRUE_COLOR * screen[0].visuals : 1 * screen[0].width : 4480 * screen[0].width_mm : 1185 * screens : 1 * selection_notification : True * shapes : True
NativeGUI_info.exe
looks virtually the same before and after, except for a difference of 1 in vertical-refresh, and the differences in the workareas:
* antialias.contrast : 1200 * antialias.enabled : True * antialias.hinting : True * antialias.orientation : RGB * antialias.type : ClearType * cursor_size : 32 * desktop_names : [] * desktops : 1 * double_click.distance : (4, 4) * double_click.time : 500 * dpi.x : 96 * dpi.y : 96 * fixed_cursor_size : (32, 32) * icon_size : 16 * native_notifiers : ['Win32_Notifier'] * native_system_trays : ['Win32Tray'] * native_tray_menu_helpers : [] * native_trays : ['Win32Tray'] * system_bell : system_bell * vertical-refresh : 60 * window_frame.border : 1 * window_frame.caption : 23 * window_frame.fixed : (3, 3) * window_frame.frame : (8, 8, 31, 8) * window_frame.menu-bar : 20 * window_frame.minimum : (140, 39) * window_frame.normal : (8, 8) * window_frame.offset : (8, 31) * workarea : (0, 0, 1920, 1040) * workareas : [(0, 0, 1920, 1040)]
* antialias.contrast : 1200 * antialias.enabled : True * antialias.hinting : True * antialias.orientation : RGB * antialias.type : ClearType * cursor_size : 32 * desktop_names : [] * desktops : 1 * double_click.distance : (4, 4) * double_click.time : 500 * dpi.x : 96 * dpi.y : 96 * fixed_cursor_size : (32, 32) * icon_size : 16 * native_notifiers : ['Win32_Notifier'] * native_system_trays : ['Win32Tray'] * native_tray_menu_helpers : [] * native_trays : ['Win32Tray'] * system_bell : system_bell * vertical-refresh : 59 * window_frame.border : 1 * window_frame.caption : 23 * window_frame.fixed : (3, 3) * window_frame.frame : (8, 8, 31, 8) * window_frame.menu-bar : 20 * window_frame.minimum : (140, 39) * window_frame.normal : (8, 8) * window_frame.offset : (8, 31) * workarea : (0, 0, 4480, 1400) * workareas : [(0, 0, 2560, 1400), (0, 0, 1920, 1040)]
C:\Program Files (x86)\Xpra>xpra_cmd.exe attach tcp:10.0.32.136:2200 --desktop-scaling=off 2015-10-30 14:10:36,256 SetProcessDPIAware()=1 2015-10-30 14:10:36,256 SetProcessDPIAwareness(1) failed: function 'SetProcessDPIAwareness' not found 2015-10-30 14:10:36,256 (not available on MS Windows before version 8 2015-10-30 14:10:36,334 Xpra gtk2 client version 0.16.0-r11074 2015-10-30 14:10:36,334 running on Microsoft Windows 8 2015-10-30 14:10:37,164 OpenGL_accelerate module loaded 2015-10-30 14:10:37,178 OpenGL enabled with Intel(R) HD Graphics 4000 2015-10-30 14:10:37,256 LoadImage(C:\Program Files (x86)\Xpra\icons\xpra.ico) using image type=ICON 2015-10-30 14:10:37,256 LoadImage(C:\Program Files (x86)\Xpra\icons\xpra.ico)=-739303107 2015-10-30 14:10:37,273 calling win32api.SetConsoleCtrlHandler(<bound method ClientExtras.handle_console_event of <xpra.platform.win32.gui.ClientExtras object at 0x0 489F710>>, True) 2015-10-30 14:10:37,273 detect_win32_session_events() hwnd=4720846 2015-10-30 14:10:37,273 Win32EventListener create with hwnd=4720846 2015-10-30 14:10:37,273 detected keyboard: layout=us 2015-10-30 14:10:37,273 get_workareas() GetMonitorInfo(<PyHANDLE:1909639>)={'Device': '\\\\.\\DISPLAY1', 'Work': (0, 0, 1920, 1040), 'Flags': 1, 'Monitor': (0, 0, 19 20, 1080)} 2015-10-30 14:10:37,273 get_workareas()=[(0, 0, 1920, 1040)] 2015-10-30 14:10:37,273 get_workarea() absolute total monitor area: (0, 0, 1920, 1080) 2015-10-30 14:10:37,273 total monitor dimensions: (1920, 1080) 2015-10-30 14:10:37,273 desktop size is 1920x1080 with 1 screen(s): 2015-10-30 14:10:37,273 Default (508x285 mm - DPI: 96x96) workarea: 1920x1040 2015-10-30 14:10:37,273 DISPLAY1 (600x340 mm - DPI: 81x80) 2015-10-30 14:10:37,273 get_vrefresh()=60 2015-10-30 14:10:37,289 callbacks for event WM_DWMNCRENDERINGCHANGED: None 2015-10-30 14:10:37,289 WM_DWMNCRENDERINGCHANGED: 1 / 0 2015-10-30 14:10:37,460 Xpra X11 server version 0.16.0-r11031 2015-10-30 14:10:37,460 running on Linux Fedora 21 Twenty One 2015-10-30 14:10:37,476 Attached to tcp:10.0.32.136:2200 (press Control-C to detach) 2015-10-30 14:10:37,476 LoadImage(C:\Program Files (x86)\Xpra\icons\xpra.ico) using image type=ICON 2015-10-30 14:10:37,476 LoadImage(C:\Program Files (x86)\Xpra\icons\xpra.ico)=-1005051397 2015-10-30 14:10:37,476 do_set_icon(-1005051397) 2015-10-30 14:10:37,492 add_window_hooks(GLClientWindow(1 : gtk2.GLWindowBacking(1, (499, 316), None))) WINDOW_HOOKS=True, GROUP_LEADER=True, UNDECORATED_STYLE=True, MAX_SIZE_HINT=True, GEOMETRY=True 2015-10-30 14:10:37,492 add_window_hooks(GLClientWindow(1 : gtk2.GLWindowBacking(1, (499, 316), None))) gdk window=<gtk.gdk.Window object at 0x48d5c60 (GdkWindow at 0x38b2370)>, hwnd=0x3b010c 2015-10-30 14:10:37,492 win32 hooks: propsys=<module 'win32com.propsys.propsys' from 'C:\Program Files (x86)\Xpra\win32com.propsys.propsys.pyd'> 2015-10-30 14:10:37,492 hooked group leader override using <module 'win32com.propsys.propsys' from 'C:\Program Files (x86)\Xpra\win32com.propsys.propsys.pyd'> 2015-10-30 14:10:37,492 fixup_window_style() unchanged style 0x6cf0000 on window 0x3b010c 2015-10-30 14:10:37,492 Win32Hooks: window frame size is 8x8 2015-10-30 14:10:37,492 Win32Hooks: message_map={36: <bound method Win32Hooks.on_getminmaxinfo of <xpra.platform.win32.window_hooks.Win32Hooks object at 0x048E5170>> } 2015-10-30 14:10:37,506 add_window_hooks(GLClientWindow(1 : gtk2.GLWindowBacking(1, (499, 316), None))) added hooks for hwnd 0x3b010c: <xpra.platform.win32.window_ho oks.Win32Hooks object at 0x048E5170> 2015-10-30 14:10:37,506 apply_maxsize_hints(GLClientWindow(1 : gtk2.GLWindowBacking(1, (499, 316), None)), {'width_inc': 6, 'height_inc': 13, 'max_width': 4093, 'min _height': 17, 'base_width': 19, 'max_height': 4086, 'min_width': 25, 'base_height': 4}) found max: 4093x4086 2015-10-30 14:10:37,506 apply_geometry_hints({'width_inc': 6, 'height_inc': 13, 'max_width': 4093, 'min_height': 17, 'base_width': 19, 'max_height': 4086, 'min_width ': 25, 'base_height': 4}) 2015-10-30 14:10:37,506 apply_maxsize_hints(GLClientWindow(1 : gtk2.GLWindowBacking(1, (499, 316), None)), {'width_inc': 6, 'height_inc': 13, 'max_width': 4093, 'min _height': 17, 'base_width': 19, 'max_height': 4086, 'min_width': 25, 'base_height': 4}) found max: 4093x4086 2015-10-30 14:10:37,506 win32 hooks: set_group(0x62088e) 2015-10-30 14:10:37,506 win32 hooks: calling <built-in method SetValue of PyIPropertyStore object at 0x01F40804>((IID('{9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}'), 5), <PyPROPVARIANT object at 0x0470F320>) 2015-10-30 14:10:37,506 callbacks for event WM_ACTIVATEAPP: [<bound method ClientExtras.activateapp of <xpra.platform.win32.gui.ClientExtras object at 0x0489F710>>] 2015-10-30 14:10:37,506 WM_ACTIVATEAPP: 1/5832 client=gtk2.client 2015-10-30 14:10:37,506 fixup_window_style() unchanged style 0x6cf0000 on window 0x3b010c 2015-10-30 14:10:37,523 add_window_hooks(GLClientWindow(2 : gtk2.GLWindowBacking(2, (499, 316), None))) WINDOW_HOOKS=True, GROUP_LEADER=True, UNDECORATED_STYLE=True, MAX_SIZE_HINT=True, GEOMETRY=True 2015-10-30 14:10:37,523 add_window_hooks(GLClientWindow(2 : gtk2.GLWindowBacking(2, (499, 316), None))) gdk window=<gtk.gdk.Window object at 0x48e85d0 (GdkWindow at 0x38b24d0)>, hwnd=0x600b36 2015-10-30 14:10:37,523 win32 hooks: propsys=<module 'win32com.propsys.propsys' from 'C:\Program Files (x86)\Xpra\win32com.propsys.propsys.pyd'> 2015-10-30 14:10:37,523 hooked group leader override using <module 'win32com.propsys.propsys' from 'C:\Program Files (x86)\Xpra\win32com.propsys.propsys.pyd'> 2015-10-30 14:10:37,523 fixup_window_style() unchanged style 0x6cf0000 on window 0x600b36 2015-10-30 14:10:37,523 Win32Hooks: window frame size is 8x8 2015-10-30 14:10:37,523 Win32Hooks: message_map={36: <bound method Win32Hooks.on_getminmaxinfo of <xpra.platform.win32.window_hooks.Win32Hooks object at 0x04883CD0>> } 2015-10-30 14:10:37,523 add_window_hooks(GLClientWindow(2 : gtk2.GLWindowBacking(2, (499, 316), None))) added hooks for hwnd 0x600b36: <xpra.platform.win32.window_ho oks.Win32Hooks object at 0x04883CD0> 2015-10-30 14:10:37,523 apply_maxsize_hints(GLClientWindow(2 : gtk2.GLWindowBacking(2, (499, 316), None)), {'width_inc': 6, 'height_inc': 13, 'max_width': 4093, 'min _height': 17, 'base_width': 19, 'max_height': 4086, 'min_width': 25, 'base_height': 4}) found max: 4093x4086 2015-10-30 14:10:37,523 apply_geometry_hints({'width_inc': 6, 'height_inc': 13, 'max_width': 4093, 'min_height': 17, 'base_width': 19, 'max_height': 4086, 'min_width ': 25, 'base_height': 4}) 2015-10-30 14:10:37,523 apply_maxsize_hints(GLClientWindow(2 : gtk2.GLWindowBacking(2, (499, 316), None)), {'width_inc': 6, 'height_inc': 13, 'max_width': 4093, 'min _height': 17, 'base_width': 19, 'max_height': 4086, 'min_width': 25, 'base_height': 4}) found max: 4093x4086 2015-10-30 14:10:37,523 win32 hooks: set_group(0x62088e) 2015-10-30 14:10:37,523 win32 hooks: calling <built-in method SetValue of PyIPropertyStore object at 0x01F40804>((IID('{9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}'), 5), <PyPROPVARIANT object at 0x0470F460>) 2015-10-30 14:10:37,539 add_window_hooks(GLClientWindow(22 : gtk2.GLWindowBacking(22, (900, 700), None))) WINDOW_HOOKS=True, GROUP_LEADER=True, UNDECORATED_STYLE=Tru e, MAX_SIZE_HINT=True, GEOMETRY=True 2015-10-30 14:10:37,539 add_window_hooks(GLClientWindow(22 : gtk2.GLWindowBacking(22, (900, 700), None))) gdk window=<gtk.gdk.Window object at 0x48e8bc0 (GdkWindow a t 0x38b26e0)>, hwnd=0x15e0942 2015-10-30 14:10:37,539 win32 hooks: propsys=<module 'win32com.propsys.propsys' from 'C:\Program Files (x86)\Xpra\win32com.propsys.propsys.pyd'> 2015-10-30 14:10:37,539 hooked group leader override using <module 'win32com.propsys.propsys' from 'C:\Program Files (x86)\Xpra\win32com.propsys.propsys.pyd'> 2015-10-30 14:10:37,539 fixup_window_style() unchanged style 0x6cf0000 on window 0x15e0942 2015-10-30 14:10:37,539 Win32Hooks: window frame size is 8x8 2015-10-30 14:10:37,539 Win32Hooks: message_map={36: <bound method Win32Hooks.on_getminmaxinfo of <xpra.platform.win32.window_hooks.Win32Hooks object at 0x048E5210>> } 2015-10-30 14:10:37,539 add_window_hooks(GLClientWindow(22 : gtk2.GLWindowBacking(22, (900, 700), None))) added hooks for hwnd 0x15e0942: <xpra.platform.win32.window _hooks.Win32Hooks object at 0x048E5210> 2015-10-30 14:10:37,539 apply_maxsize_hints(GLClientWindow(22 : gtk2.GLWindowBacking(22, (900, 700), None)), {'max_width': 4096, 'min_height': 199, 'base_width': 0, 'max_height': 4096, 'min_width': 581, 'base_height': 0}) found max: 4096x4096 2015-10-30 14:10:37,539 apply_geometry_hints({'max_width': 4096, 'min_height': 199, 'base_width': 0, 'max_height': 4096, 'min_width': 581, 'base_height': 0}) 2015-10-30 14:10:37,539 apply_maxsize_hints(GLClientWindow(22 : gtk2.GLWindowBacking(22, (900, 700), None)), {'max_width': 4096, 'min_height': 199, 'base_width': 0, 'max_height': 4096, 'min_width': 581, 'base_height': 0}) found max: 4096x4096 2015-10-30 14:10:37,539 win32 hooks: set_group(0x9b00e2) 2015-10-30 14:10:37,539 win32 hooks: calling <built-in method SetValue of PyIPropertyStore object at 0x01F406E4>((IID('{9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}'), 5), <PyPROPVARIANT object at 0x0470F230>) 2015-10-30 14:10:37,553 LoadImage(C:\Program Files (x86)\Xpra\icons\clipboard.ico) using image type=ICON 2015-10-30 14:10:37,553 LoadImage(C:\Program Files (x86)\Xpra\icons\clipboard.ico)=-1506472631 2015-10-30 14:10:37,553 do_set_icon(-1506472631) 2015-10-30 14:10:37,553 after_window_state_updated() 2015-10-30 14:10:37,553 fixup_window_style() unchanged style 0x16cf0000 on window 0x3b010c 2015-10-30 14:10:37,569 after_window_state_updated() 2015-10-30 14:10:37,569 fixup_window_style() unchanged style 0x16cf0000 on window 0x600b36 2015-10-30 14:10:37,569 after_window_state_updated() 2015-10-30 14:10:37,569 fixup_window_style() unchanged style 0x16cf0000 on window 0x15e0942 2015-10-30 14:10:37,694 LoadImage(C:\Program Files (x86)\Xpra\icons\xpra.ico) using image type=ICON 2015-10-30 14:10:37,694 LoadImage(C:\Program Files (x86)\Xpra\icons\xpra.ico)=-1029037519 2015-10-30 14:10:37,694 do_set_icon(-1029037519) 2015-10-30 14:10:38,444 sound-sink using audio codec: MPEG 1 Audio, Layer 3 (MP3) 2015-10-30 14:11:12,697 callbacks for event WM_DISPLAYCHANGE: None 2015-10-30 14:11:12,697 WM_DISPLAYCHANGE: 32 / 94374400 2015-10-30 14:11:12,713 on_getminmaxinfo(22939970, 36, 0, 1633064) max_size=(4096, 4096), frame=8x8, minmaxinfo size=4112x4135 2015-10-30 14:11:12,713 on_getminmaxinfo(6294326, 36, 0, 1633064) max_size=(4093, 4086), frame=8x8, minmaxinfo size=4109x4125 2015-10-30 14:11:12,713 on_getminmaxinfo(3866892, 36, 0, 1633064) max_size=(4093, 4086), frame=8x8, minmaxinfo size=4109x4125 2015-10-30 14:11:12,713 callbacks for event WM_WINDOWPOSCHANGING: None 2015-10-30 14:11:12,713 WM_WINDOWPOSCHANGING: 0 / 1635832 2015-10-30 14:11:12,747 callbacks for event WM_GETMINMAXINFO: None 2015-10-30 14:11:12,747 WM_GETMINMAXINFO: 0 / 1633728 2015-10-30 14:11:12,750 callbacks for event WM_WINDOWPOSCHANGED: None 2015-10-30 14:11:12,750 WM_WINDOWPOSCHANGED: 0 / 1635832 2015-10-30 14:11:12,752 callbacks for event WM_MOVE: [<bound method ClientExtras.wm_move of <xpra.platform.win32.gui.ClientExtras object at 0x0489F710>>] 2015-10-30 14:11:12,753 WM_MOVE: 0/10420360 client=gtk2.client 2015-10-30 14:11:13,526 get_workareas() GetMonitorInfo(<PyHANDLE:155067071>)={'Device': '\\\\.\\DISPLAY1', 'Work': (0, 0, 2560, 1440), 'Flags': 1, 'Monitor': (0, 0, 2560, 1440)} 2015-10-30 14:11:13,526 get_workareas() GetMonitorInfo(<PyHANDLE:1975175>)={'Device': '\\\\.\\DISPLAY2', 'Work': (-1920, 0, 0, 1080), 'Flags': 0, 'Monitor': (-1920, 0, 0, 1080)} 2015-10-30 14:11:13,526 get_workareas()=[(0, 0, 2560, 1440), (0, 0, 1920, 1080)] 2015-10-30 14:11:13,526 get_workarea() absolute total monitor area: (-1920, 0, 2560, 1440) 2015-10-30 14:11:13,526 total monitor dimensions: (4480, 1440) 2015-10-30 14:11:13,542 sending updated screen size to server: 4480x1440 with 1 screens 2015-10-30 14:11:13,542 Default (1185x381 mm - DPI: 96x96) 2015-10-30 14:11:13,558 DISPLAY1 2560x1440 at 1920x0 (597x336 mm - DPI: 108x108) workarea: 2560x1440 2015-10-30 14:11:13,558 DISPLAY2 1920x1080 (600x340 mm - DPI: 81x80) workarea: 1920x1080 2015-10-30 14:11:13,558 screen size change: will reinit the windows 2015-10-30 14:11:13,605 remove_window_hooks(GLClientWindow(1 : None)) found <xpra.platform.win32.window_hooks.Win32Hooks object at 0x048E5170> 2015-10-30 14:11:13,605 cleanup() 2015-10-30 14:11:13,704 add_window_hooks(GLClientWindow(1 : gtk2.GLWindowBacking(1, (499, 316), None))) WINDOW_HOOKS=True, GROUP_LEADER=True, UNDECORATED_STYLE=True, MAX_SIZE_HINT=True, GEOMETRY=True 2015-10-30 14:11:13,720 add_window_hooks(GLClientWindow(1 : gtk2.GLWindowBacking(1, (499, 316), None))) gdk window=<gtk.gdk.Window object at 0x49088a0 (GdkWindow at 0x38b28f0)>, hwnd=0x3c010c 2015-10-30 14:11:13,720 win32 hooks: propsys=<module 'win32com.propsys.propsys' from 'C:\Program Files (x86)\Xpra\win32com.propsys.propsys.pyd'> 2015-10-30 14:11:13,720 hooked group leader override using <module 'win32com.propsys.propsys' from 'C:\Program Files (x86)\Xpra\win32com.propsys.propsys.pyd'> 2015-10-30 14:11:13,736 fixup_window_style() unchanged style 0x6cf0000 on window 0x3c010c 2015-10-30 14:11:13,736 Win32Hooks: window frame size is 8x8 2015-10-30 14:11:13,736 Win32Hooks: message_map={36: <bound method Win32Hooks.on_getminmaxinfo of <xpra.platform.win32.window_hooks.Win32Hooks object at 0x047A20F0>> } 2015-10-30 14:11:13,736 add_window_hooks(GLClientWindow(1 : gtk2.GLWindowBacking(1, (499, 316), None))) added hooks for hwnd 0x3c010c: <xpra.platform.win32.window_ho oks.Win32Hooks object at 0x047A20F0> 2015-10-30 14:11:13,736 apply_maxsize_hints(GLClientWindow(1 : gtk2.GLWindowBacking(1, (499, 316), None)), {'width_inc': 6, 'height_inc': 13, 'max_width': 4093, 'min _height': 17, 'base_width': 19, 'max_height': 4086, 'min_width': 25, 'base_height': 4}) found max: 4093x4086 2015-10-30 14:11:13,736 apply_geometry_hints({'width_inc': 6, 'height_inc': 13, 'max_width': 4093, 'min_height': 17, 'base_width': 19, 'max_height': 4086, 'min_width ': 25, 'base_height': 4}) 2015-10-30 14:11:13,736 apply_maxsize_hints(GLClientWindow(1 : gtk2.GLWindowBacking(1, (499, 316), None)), {'width_inc': 6, 'height_inc': 13, 'max_width': 4093, 'min _height': 17, 'base_width': 19, 'max_height': 4086, 'min_width': 25, 'base_height': 4}) found max: 4093x4086 2015-10-30 14:11:13,736 win32 hooks: set_group(0x62088e) 2015-10-30 14:11:13,736 win32 hooks: calling <built-in method SetValue of PyIPropertyStore object at 0x01F40B04>((IID('{9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}'), 5), <PyPROPVARIANT object at 0x0470F0C8>) 2015-10-30 14:11:13,815 remove_window_hooks(GLClientWindow(2 : None)) found <xpra.platform.win32.window_hooks.Win32Hooks object at 0x04883CD0> 2015-10-30 14:11:13,815 cleanup() 2015-10-30 14:11:13,877 add_window_hooks(GLClientWindow(2 : gtk2.GLWindowBacking(2, (499, 316), None))) WINDOW_HOOKS=True, GROUP_LEADER=True, UNDECORATED_STYLE=True, MAX_SIZE_HINT=True, GEOMETRY=True 2015-10-30 14:11:13,877 add_window_hooks(GLClientWindow(2 : gtk2.GLWindowBacking(2, (499, 316), None))) gdk window=<gtk.gdk.Window object at 0x48fa648 (GdkWindow at 0x38b2a50)>, hwnd=0x610b36 2015-10-30 14:11:13,877 win32 hooks: propsys=<module 'win32com.propsys.propsys' from 'C:\Program Files (x86)\Xpra\win32com.propsys.propsys.pyd'> 2015-10-30 14:11:13,877 hooked group leader override using <module 'win32com.propsys.propsys' from 'C:\Program Files (x86)\Xpra\win32com.propsys.propsys.pyd'> 2015-10-30 14:11:13,877 fixup_window_style() unchanged style 0x6cf0000 on window 0x610b36 2015-10-30 14:11:13,877 Win32Hooks: window frame size is 8x8 2015-10-30 14:11:13,877 Win32Hooks: message_map={36: <bound method Win32Hooks.on_getminmaxinfo of <xpra.platform.win32.window_hooks.Win32Hooks object at 0x048E5290>> } 2015-10-30 14:11:13,877 add_window_hooks(GLClientWindow(2 : gtk2.GLWindowBacking(2, (499, 316), None))) added hooks for hwnd 0x610b36: <xpra.platform.win32.window_ho oks.Win32Hooks object at 0x048E5290> 2015-10-30 14:11:13,892 apply_maxsize_hints(GLClientWindow(2 : gtk2.GLWindowBacking(2, (499, 316), None)), {'width_inc': 6, 'height_inc': 13, 'max_width': 4093, 'min _height': 17, 'base_width': 19, 'max_height': 4086, 'min_width': 25, 'base_height': 4}) found max: 4093x4086 2015-10-30 14:11:13,892 apply_geometry_hints({'width_inc': 6, 'height_inc': 13, 'max_width': 4093, 'min_height': 17, 'base_width': 19, 'max_height': 4086, 'min_width ': 25, 'base_height': 4}) 2015-10-30 14:11:13,892 apply_maxsize_hints(GLClientWindow(2 : gtk2.GLWindowBacking(2, (499, 316), None)), {'width_inc': 6, 'height_inc': 13, 'max_width': 4093, 'min _height': 17, 'base_width': 19, 'max_height': 4086, 'min_width': 25, 'base_height': 4}) found max: 4093x4086 2015-10-30 14:11:13,892 win32 hooks: set_group(0x62088e) 2015-10-30 14:11:13,892 win32 hooks: calling <built-in method SetValue of PyIPropertyStore object at 0x01F408F4>((IID('{9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}'), 5), <PyPROPVARIANT object at 0x0470F0A0>) 2015-10-30 14:11:13,990 remove_window_hooks(GLClientWindow(22 : None)) found <xpra.platform.win32.window_hooks.Win32Hooks object at 0x048E5210> 2015-10-30 14:11:13,990 cleanup() 2015-10-30 14:11:14,038 add_window_hooks(GLClientWindow(22 : gtk2.GLWindowBacking(22, (900, 700), None))) WINDOW_HOOKS=True, GROUP_LEADER=True, UNDECORATED_STYLE=Tru e, MAX_SIZE_HINT=True, GEOMETRY=True 2015-10-30 14:11:14,038 add_window_hooks(GLClientWindow(22 : gtk2.GLWindowBacking(22, (900, 700), None))) gdk window=<gtk.gdk.Window object at 0x4908bc0 (GdkWindow a t 0x38b2bb0)>, hwnd=0xad0882 2015-10-30 14:11:14,053 win32 hooks: propsys=<module 'win32com.propsys.propsys' from 'C:\Program Files (x86)\Xpra\win32com.propsys.propsys.pyd'> 2015-10-30 14:11:14,053 hooked group leader override using <module 'win32com.propsys.propsys' from 'C:\Program Files (x86)\Xpra\win32com.propsys.propsys.pyd'> 2015-10-30 14:11:14,053 fixup_window_style() unchanged style 0x6cf0000 on window 0xad0882 2015-10-30 14:11:14,053 Win32Hooks: window frame size is 8x8 2015-10-30 14:11:14,069 Win32Hooks: message_map={36: <bound method Win32Hooks.on_getminmaxinfo of <xpra.platform.win32.window_hooks.Win32Hooks object at 0x04904550>> } 2015-10-30 14:11:14,069 add_window_hooks(GLClientWindow(22 : gtk2.GLWindowBacking(22, (900, 700), None))) added hooks for hwnd 0xad0882: <xpra.platform.win32.window_ hooks.Win32Hooks object at 0x04904550> 2015-10-30 14:11:14,069 apply_maxsize_hints(GLClientWindow(22 : gtk2.GLWindowBacking(22, (900, 700), None)), {'max_width': 4096, 'min_height': 199, 'base_width': 0, 'max_height': 4096, 'min_width': 581, 'base_height': 0}) found max: 4096x4096 2015-10-30 14:11:14,085 apply_geometry_hints({'max_width': 4096, 'min_height': 199, 'base_width': 0, 'max_height': 4096, 'min_width': 581, 'base_height': 0}) 2015-10-30 14:11:14,085 apply_maxsize_hints(GLClientWindow(22 : gtk2.GLWindowBacking(22, (900, 700), None)), {'max_width': 4096, 'min_height': 199, 'base_width': 0, 'max_height': 4096, 'min_width': 581, 'base_height': 0}) found max: 4096x4096 2015-10-30 14:11:14,101 win32 hooks: set_group(0x9b00e2) 2015-10-30 14:11:14,101 win32 hooks: calling <built-in method SetValue of PyIPropertyStore object at 0x01F40B94>((IID('{9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}'), 5), <PyPROPVARIANT object at 0x0470F078>) 2015-10-30 14:11:14,190 after_window_state_updated() 2015-10-30 14:11:14,190 fixup_window_style() unchanged style 0x16cf0000 on window 0x3c010c 2015-10-30 14:11:14,237 after_window_state_updated() 2015-10-30 14:11:14,237 fixup_window_style() unchanged style 0x16cf0000 on window 0x610b36 2015-10-30 14:11:14,253 after_window_state_updated() 2015-10-30 14:11:14,269 fixup_window_style() unchanged style 0x16cf0000 on window 0xad0882 2015-10-30 14:11:14,269 callbacks for event WM_WINDOWPOSCHANGING: None 2015-10-30 14:11:14,269 WM_WINDOWPOSCHANGING: 0 / 1635832 2015-10-30 14:11:14,285 callbacks for event WM_GETMINMAXINFO: None 2015-10-30 14:11:14,285 WM_GETMINMAXINFO: 0 / 1633728 2015-10-30 14:11:14,285 callbacks for event WM_WININICHANGE: None 2015-10-30 14:11:14,285 WM_WININICHANGE: 24 / 582872 2015-10-30 14:11:14,315 callbacks for event WM_WINDOWPOSCHANGING: None 2015-10-30 14:11:14,315 WM_WINDOWPOSCHANGING: 0 / 1635832 2015-10-30 14:11:14,315 callbacks for event WM_GETMINMAXINFO: None 2015-10-30 14:11:14,315 WM_GETMINMAXINFO: 0 / 1633728 2015-10-30 14:11:14,315 callbacks for event WM_WININICHANGE: None 2015-10-30 14:11:14,332 WM_WININICHANGE: 47 / 0 2015-10-30 14:11:14,339 callbacks for event WM_WININICHANGE: None 2015-10-30 14:11:14,341 WM_WININICHANGE: 47 / 0 2015-10-30 14:11:14,344 on_getminmaxinfo(11339906, 36, 0, 1633064) max_size=(4096, 4096), frame=8x8, minmaxinfo size=4112x4135 2015-10-30 14:11:14,346 on_getminmaxinfo(6359862, 36, 0, 1633064) max_size=(4093, 4086), frame=8x8, minmaxinfo size=4109x4125 2015-10-30 14:11:14,351 on_getminmaxinfo(3932428, 36, 0, 1633064) max_size=(4093, 4086), frame=8x8, minmaxinfo size=4109x4125 2015-10-30 14:11:14,352 callbacks for event WM_WINDOWPOSCHANGING: None 2015-10-30 14:11:14,354 WM_WINDOWPOSCHANGING: 0 / 1635832 2015-10-30 14:11:14,365 callbacks for event WM_GETMINMAXINFO: None 2015-10-30 14:11:14,368 WM_GETMINMAXINFO: 0 / 1633728 2015-10-30 14:11:14,385 callbacks for event WM_WININICHANGE: None 2015-10-30 14:11:14,385 WM_WININICHANGE: 47 / 0 2015-10-30 14:11:14,385 on_getminmaxinfo(11339906, 36, 0, 1633064) max_size=(4096, 4096), frame=8x8, minmaxinfo size=4112x4135 2015-10-30 14:11:14,385 on_getminmaxinfo(6359862, 36, 0, 1633064) max_size=(4093, 4086), frame=8x8, minmaxinfo size=4109x4125 2015-10-30 14:11:14,401 on_getminmaxinfo(3932428, 36, 0, 1633064) max_size=(4093, 4086), frame=8x8, minmaxinfo size=4109x4125 2015-10-30 14:11:14,401 callbacks for event WM_WINDOWPOSCHANGING: None 2015-10-30 14:11:14,417 WM_WINDOWPOSCHANGING: 0 / 1635832 2015-10-30 14:11:14,417 callbacks for event WM_GETMINMAXINFO: None 2015-10-30 14:11:14,417 WM_GETMINMAXINFO: 0 / 1633728 2015-10-30 14:11:14,433 callbacks for event WM_WININICHANGE: None 2015-10-30 14:11:14,433 WM_WININICHANGE: 47 / 0 2015-10-30 14:11:14,448 callbacks for event WM_WININICHANGE: None 2015-10-30 14:11:14,448 WM_WININICHANGE: 24 / 582872 2015-10-30 14:11:14,871 callbacks for event WM_DEVICECHANGE: None 2015-10-30 14:11:14,871 WM_DEVICECHANGE: 7 / 0 2015-10-30 14:11:14,871 callbacks for event WM_DEVICECHANGE: None 2015-10-30 14:11:14,871 WM_DEVICECHANGE: 7 / 0 2015-10-30 14:11:15,105 callbacks for event WM_DEVICECHANGE: None 2015-10-30 14:11:15,121 WM_DEVICECHANGE: 7 / 0 2015-10-30 14:11:30,920 callbacks for event WM_ACTIVATEAPP: [<bound method ClientExtras.activateapp of <xpra.platform.win32.gui.ClientExtras object at 0x0489F710>>] 2015-10-30 14:11:30,920 WM_ACTIVATEAPP: 0/1604 client=gtk2.client 2015-10-30 14:11:30,920 fixup_window_style() unchanged style 0x16cf0000 on window 0x3c010c 2015-10-30 14:11:30,920 fixup_window_style() unchanged style 0x16cf0000 on window 0x610b36 2015-10-30 14:11:30,920 fixup_window_style() unchanged style 0x16cf0000 on window 0xad0882
I'll attach the screenshot to show the displays' desktops as well as a screenshot of the display layout (the display on the left in the screenshot is the one on the left in the layout screenshot, i.e. display 2... and the one on the right is the primary as indicated by the strange icon in the layout screenshot).
screenshot of entire two display desktop, left is secondary monitor (#2)
control panel's notion of layout, left is left in screenshot, right is primary
The secret to repro isn't a 4K monitor, it's the need to connect to the xpra session with a primary monitor disconnected - and after the xpra session has been started, then you have to connect the primary monitor. (Yes, you read that correctly, at this point, as long as a user isn't disconnecting & reconnecting a designated primary monitor on a windows client system, I can't find any repro for this bug.)
Still no problem here with win7. Maybe this issue is Windows 8 / 8.1 specific? r11106 makes some minor improvements to the debug output.
Please see comment:22
xpra info | grep geometry=
, does it look like the window is in the correct location?
XPRA_WIN32_WINDOW_HOOKS=0
help?
The only events we see after re-initializing the windows are:
Spoke too soon, I can reproduce it now if the primary monitor starts disconnected and configured to appear on the right of the other monitor only. (which was mentioned previously in this ticket, but not in the steps given in comment:23)
$ xpra info | grep -e "window.*\.geometry=" window[1].geometry=(1957, 785, 541, 238)
move_pointer(1, (2143, 818))
0x40001e
instead of the client window or its corral window?:
motion event: <X11:MotionNotify {'delivered_to': '0x40001e', 'send_event': 0, 'subwindow': None, \ 'x_root': 1919, 'type': 6, 'window': '0x40001e', 'is_hint': 0, \ 'y_root': 818, 'state': 16, 'time': 12089278L, \ 'y': 818, 'x': 1919, 'serial': '0xa0a8', 'root': '0x44', 'display': ':10', 'same_screen': 1}>
prevents windows from being moved off-screen
What seems be happening here is that the window is moved to its new location (shifted to the right as the new monitor is inserted to the left) before we have had a chance to update the virtual display's size. (which takes a while, and we delay it a little bit more to ensure we only do it only once, as various things get updated in turns, all triggering a new message).
The window ends up being off-screen and moving it back on-screen later is not enough to make it interactive again - maybe something gets wedged in GTK?
r11114 fixes that for trunk (r11115 should not be strictly necessary) by clamping the window to the maximum size of the root window (the current size of the virtual display). Backported to v0.15.x in r11116. (may backport to v0.14.x later)
A more elegant solution would be to delay all window configuration events until we know that the server's virtual screen is up to date, but this would be much harder to implement.
@afarr: please test both branches and let me know if you can still break it.
Tested with 0.16.0 r11118, against a fedora 21 0.16.0 r11118, and it worked despite my best efforts (to be fair, the doubtful cases have become rather narrow).
Will have to bother mr. smo for a 0.15 client...
Hmm.. tested with windows 0.15.8 r11122 against 0.15.8 r11099 fedora 21 server... and alas, the fix didn't take.
Disconnected my primary display, started the session, connected the primary display. Neither a gedit nor a chromium window started from an xterm before the connection of the primary display, nor any started after the connection was at all responsive to mouse clicks. I couldn't resize or move or even minimize in an attempt to make the window responsive.
The 0.15.8 r11122 osx client does work as expected/hoped though - even when disconnecting the display that the menu bar is assigned to (apparently the osx equivalent to setting a "primary" display).
Digging in with the windows 0.15.8 client a bit...
--sync-xvfb
... well, oops, no such option for 0.15.8.
xpra info | grep geometry=
... yes, the monitors look like they're in the right locations (I don't see anything in the full info to determine locations for windows... just their size).
XPRA_WIN32_WINDOW_HOOKS=0
... no help, alas.
Sounds like you can repro... but I've run out of ideas of things to try to speed process further for you with the 0.15.8 ...
Hmm.. tested with windows 0.15.8 r11122 against 0.15.8 r11099 fedora 21 server... and alas, the fix didn't take.
As per comment:26, the fix is in r11116, server-side.
(you can figure out that the change is server side by following the link to the changeset and looking at the name of the file(s) changed, that's often enough to figure it out)
Yes... good point about the versions. Had a hiccup in my auto-build process and didn't spot my versioning had failed me.
Apologies.
Sorted it out, and with that same 0.15.8 r11122 windows client against a more reasonable 0.15.8 r11145 fedora 21 server - all worked as expected/hoped.
I think we're out of corner cases.
I'll close this for now... though if you decide to backport to 0.14.x then I suppose a quick re-opening will be called for.
Somewhat related:
this ticket has been moved to: https://github.com/Xpra-org/xpra/issues/980