xpra icon
Bug tracker and wiki

This bug tracker and wiki are being discontinued
please use https://github.com/Xpra-org/xpra instead.


Opened 17 months ago

Last modified 3 months ago

#2514 closed defect

Popup not shown — at Version 8

Reported by: wolfram Owned by: wolfram
Priority: critical Milestone: 4.0
Component: client Version: 3.0.x
Keywords: Cc:

Description (last modified by Antoine Martin)

(server: xpra 3.0.3 on RHEL, client: xpra 3.0.3 on Win10)
I have a Java/Swing/Batik based tool that controls some electronic
hardware. When I click on certain components, a popup window should appear -- but it does not. The tool does not work without hardware attached to the workstation so I can't share it and don't know of a way for someone else to reproduce this problem.

I noticed that behavior before updating xpra to 3.0.3 (some 3.0.1 or 3.0.2 versions) and hoped the update might fix it, but it doesn't. I also tried a version 2.5.2 client (don't know an easy way to switch server versions...) and it behaves the same.
The popup does not appear when it should but an icon on the windows taskbar appears, indicating that there should be a popup. I minimized all windows to make sure that the popup is not hidden behind one of them.
The popup appears when I use cygwin/xwin connection to the RHEL workstation instead of xpra.

The "-d window" output when the popup is meant to show up is like this:

2019-12-12 18:13:09,559 make_new_window(..) client_window_classes=(<class 'xpra.client.gl.gtk3.nativegl_client_window.GLClientWindow'>, <class 'xpra.client.gtk3.client_window.ClientWindow'>), group_leader_window=<__gi__.GdkWin32Window object at 0x000000002e7dfd40 (GdkWin32Window at 0x00000000033a9af0)>
2019-12-12 18:13:09,560 <class 'xpra.client.gl.gtk3.nativegl_client_window.GLClientWindow'>(gtk3.client, <__gi__.GdkWin32Window object at 0x000000002e7dfd40 (GdkWin32Window at 0x00000000033a9af0)>, 0, 33, 479, 1345, 203, 204, 203, 204, {b'size-constraints': {b'position': (479, 1345), b'gravity': 1}, b'xid': b'0x60029d', b'title': b' ', b'pid': 61725, b'client-machine': b'xxxxxxxx', b'icon-title': b'Java', b'group-leader-xid': 6292118, b'window-type': (b'DIALOG',), b'decorations': 0, b'skip-taskbar': True, b'class-instance': (b'sun-awt-X11-XDialogPeer', b'org-eclipse-jdt-internal-jarinjarloader-JarRsrcLoader'), b'set-initial-position': True}, False, {}, WindowBorder(False, 0xD41D8C, 0.6, 5), (32767, 32767), [4096, 2048, 16, 16, 7, 7, 1, b'\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff', b''], 0)
2019-12-12 18:13:09,563 setup_window(203, 204)
2019-12-12 18:13:09,564 new_backing(203, 204) backing_class=<class 'xpra.client.gl.gtk_base.gl_drawing_area.GLDrawingArea'>
2019-12-12 18:13:09,564 make_new_backing(<class 'xpra.client.gl.gtk_base.gl_drawing_area.GLDrawingArea'>, 203, 204, 203, 204) effective backing class=<class 'xpra.client.gl.gtk_base.gl_drawing_area.GLDrawingArea'>, server alpha=False, window alpha=False
2019-12-12 18:13:09,566 set_window_type(['DIALOG']) hints=0
2019-12-12 18:13:09,566 make_new_window(..) window(33)=GLClientWindow(33 : gtk3.GLDrawingArea(33, (203, 204), None))
2019-12-12 18:13:09,578 Win32Hooks: window frame size is 8x8
2019-12-12 18:13:09,579 Win32Hooks: message_map={36: <bound method Win32Hooks.on_getminmaxinfo of <xpra.platform.win32.window_hooks.Win32Hooks object at 0x000000002e5c2490>>}
2019-12-12 18:13:09,589 GL do_configure_event(<Gdk.EventConfigure object at 0x000000002e7e83b0 (void at 0x000000001ada20b0)>)
2019-12-12 18:13:09,592 GLClientWindow(33 : gtk3.GLDrawingArea(33, (203, 204), None)).do_map_event(<Gdk.EventAny object at 0x000000003031d680 (void at 0x000000001ad84c00)>) OR=False
2019-12-12 18:13:09,593 GL do_configure_event(<Gdk.EventConfigure object at 0x000000002e7e83b0 (void at 0x000000001ada2c90)>)
2019-12-12 18:13:09,654 cairo_paint_border(<cairo.Context object at 0x00000000302ec4d0>, None)
2019-12-12 18:13:09,670 cairo_paint_border(<cairo.Context object at 0x00000000302ec4d0>, None)
2019-12-12 18:13:09,687 cairo_paint_border(<cairo.Context object at 0x00000000302ecfb0>, None)
2019-12-12 18:13:09,704 cairo_paint_border(<cairo.Context object at 0x00000000302ecf70>, None)
2019-12-12 18:13:09,720 cairo_paint_border(<cairo.Context object at 0x00000000302ec3d0>, None)
2019-12-12 18:13:09,737 cairo_paint_border(<cairo.Context object at 0x00000000302ec4d0>, None)
2019-12-12 18:13:09,754 cairo_paint_border(<cairo.Context object at 0x00000000302ec3d0>, None)
2019-12-12 18:13:09,770 cairo_paint_border(<cairo.Context object at 0x00000000302ecf70>, None)
2019-12-12 18:13:09,787 cairo_paint_border(<cairo.Context object at 0x00000000302ec3d0>, None)
2019-12-12 18:13:09,804 cairo_paint_border(<cairo.Context object at 0x00000000302ec5b0>, None)
2019-12-12 18:13:09,820 cairo_paint_border(<cairo.Context object at 0x00000000302ec3d0>, None)
2019-12-12 18:13:09,837 cairo_paint_border(<cairo.Context object at 0x00000000302ecf70>, None)
2019-12-12 18:13:09,854 cairo_paint_border(<cairo.Context object at 0x00000000302ec3d0>, None)
2019-12-12 18:13:09,870 cairo_paint_border(<cairo.Context object at 0x00000000302ec950>, None)
2019-12-12 18:13:09,887 cairo_paint_border(<cairo.Context object at 0x00000000302ec3d0>, None)
2019-12-12 18:13:09,904 cairo_paint_border(<cairo.Context object at 0x00000000302ecf70>, None)
2019-12-12 18:13:09,921 cairo_paint_border(<cairo.Context object at 0x00000000302ec3d0>, None)

Change History (9)

comment:1 Changed 17 months ago by Antoine Martin

Owner: changed from Antoine Martin to wolfram

I have a Java/Swing/Batik based tool that controls some electronic

Java applications are notoriously bad at following X11 conventions. We have a number of workarounds for them already.

From your log, the window definition is here:

<class 'xpra.client.gl.gtk3.nativegl_client_window.GLClientWindow'>\
    (gtk3.client, <__gi__.GdkWin32Window object at 0x000000002e7dfd40 (GdkWin32Window at 0x00000000033a9af0)>, \
    0, 33, 479, 1345, 203, 204, 203, 204, {
      b'size-constraints': {b'position': (479, 1345), b'gravity': 1}, b'xid': b'0x60029d', b'title': b' ', \
      b'pid': 61725, b'client-machine': b'xxxxxxxx', b'icon-title': b'Java', b'group-leader-xid': 6292118, \
      b'window-type': (b'DIALOG',), b'decorations': 0, b'skip-taskbar': True, b'class-instance': (b'sun-awt-X11-XDialogPeer', \
      b'org-eclipse-jdt-internal-jarinjarloader-JarRsrcLoader'), b'set-initial-position': True}, \
      False, {}, WindowBorder(False, 0xD41D8C, 0.6, 5), (32767, 32767), 
      [4096, 2048, 16, 16, 7, 7, 1, b'\xff\xff\xff\xff\xff\xff\xff\xff...xff', b''], 0)

The window geometry sent by the server is: 479, 1345, 203, 204.
And the application is telling us to honour the initial position: 'set-initial-position': True is in the metadata.
That's 203x204 size at position 479,1345.
Is your client display big enough for that?
Do you start your application before connecting?
If so, does it work any better if you start it afterwards?
Does it help if you turn off opengl?
Can you attach the picture from xpra screenshot?
Maybe also attach the -d window,geometry,draw log output.

Last edited 17 months ago by Antoine Martin (previous) (diff)

comment:2 Changed 17 months ago by wolfram

Tried a few things and it looks to me like the problem is about decorated/undecorated windows. I made a small sample program (attached) that I run with

javac Popups.java 
java Popups

When run through xpra, only the decorated popup shows up.

Changed 17 months ago by wolfram

Attachment: Popups.java added

comment:3 Changed 17 months ago by Antoine Martin

I've tried your example on Linux, MacOS, Windows 7 and Windows 10, and even with the html5 client.
Both windows showed up everywhere.

So there must be something different about your setup.

Please clarify:

  • the resolution you are running at
  • the exact build you are running (in full, not just the version)
  • have you tried toggling opengl on or off?

comment:4 Changed 17 months ago by wolfram

With --opengl=no the non-decorated window DOES show.
Here are the startup messages (with OpenGL enabled). I think they contain what you asked for:

2019-12-13 15:18:55,273 parse_padding_colors(None)=(0, 0, 0)
2019-12-13 15:18:55,341 Xpra GTK3 client version 3.0.3-r24690 64-bit
2019-12-13 15:18:55,343  running on Microsoft Windows 10
2019-12-13 15:18:55,396 Warning: failed to import opencv:
2019-12-13 15:18:55,396  No module named 'cv2'
2019-12-13 15:18:55,397  webcam forwarding is disabled
2019-12-13 15:18:55,636 OpenGL_accelerate module loaded
2019-12-13 15:18:55,673 Using accelerated ArrayDatatype
2019-12-13 15:18:56,884 OpenGL enabled with NVS 310/PCIe/SSE2
2019-12-13 15:18:57,080 Connected (version 2.0, client OpenSSH_7.4)
2019-12-13 15:18:57,132 SSH password authentication failed:
2019-12-13 15:18:57,132  Bad authentication type; allowed types: ['publickey', 'gssapi-keyex', 'gssapi-with-mic', 'password']
please enter the SSH password for [...]:
2019-12-13 15:19:04,924 Authentication (password) successful!
2019-12-13 15:19:05,046  keyboard settings: layout=de
2019-12-13 15:19:05,047  desktop size is 3120x1600 with 1 screen:
2019-12-13 15:19:05,048   Default (825x423 mm - DPI: 96x96) workarea: 3120x1560
2019-12-13 15:19:05,048     (Standard monitor types) HP ZR2440w 1920x1200 at 1200x274 (518x324 mm - DPI: 94x94) workarea: 1920x1160
2019-12-13 15:19:05,048     (Standard monitor types) hp L2035 1200x1600 (408x306 mm - DPI: 74x132) workarea: 1200x1560
2019-12-13 15:19:06,473 enabled remote logging
2019-12-13 15:19:06,474 Xpra GTK2 X11 server version 3.0.3-r24692 64-bit
2019-12-13 15:19:06,474  running on Linux RedHatEnterpriseWorkstation 7.4 Maipo
2019-12-13 15:19:06,482 Attached to ssh://[...]

comment:5 Changed 17 months ago by Antoine Martin

Owner: changed from wolfram to Antoine Martin
Status: newassigned

With --opengl=no the non-decorated window DOES show.

I can reproduce this on a system with an nvidia card.

comment:6 Changed 17 months ago by Antoine Martin

Priority: majorcritical

I can reproduce this on a system with an nvidia card.

And now I can't!

I'm not sure if it is the same bug, but running your example I also see some problems registering clicks.
It seems that sometimes the clicks go through the window with the two buttons and land somewhere else on the virtual screen. but not on the window it is intended for. Sometimes as if the window-relative pointer coordinates were used as absolute values.
Very strange since all other applications work fine.

comment:7 Changed 17 months ago by Antoine Martin

Bisecting with python2 builds:

  • v1.0.x OK
  • v3.0.3 bad
  • v2.0.x OK
  • v2.3.x not sure - seen the bug, seen a click through the window
  • v2.4.x bad
  • v2.2.x OK

So somewhere between 2.2 (r17607), 2.3 (r19246) and 2.4 (r20681):

And so this is caused by relative pointer data. But why?

I think the click-through effect with the python3 builds is because with GTK3 passes we receive the click events on the window title bar and those should not be propagated to the server.

comment:8 Changed 17 months ago by Antoine Martin

Description: modified (diff)
Owner: changed from Antoine Martin to wolfram
Status: assignednew

The bug I was chasing seems to have gone away completely on its own!? Maybe a system update fixed a buggy library? (will try again on a different system)

So, back to the original bug in this ticket - recap: only occurs with opengl enabled, only on win32, only with python3 builds, only with undecorated windows!

Comparing with and without opengl, the popup window metadata looks unremarkable (as per ticket description).
So then I updated the test apps to run native under GTK3 (r24723), and it turns out that GTK3 is just buggy on win32 with undecorated windows: when you toggle the "decoration" flag off and then on again, the window does not regain its decorations or at least they are not being re-drawn, but the pointer events are adjusted... so they land with an offset.
Running the same example through xpra: the window disappears as soon as we try to remove the decorations!
(also spotted another bug: #2516)

So r24725 fixes this by not using opengl for undecorated windows and re-initializing the window when the "decorations" flag is toggled. (backport to v3 in r24727)
@wolfram: there are beta builds with this fix here: https://xpra.org/beta/windows.
Please close this ticket if that works for you.

Note: See TracTickets for help on using tickets.