Dear Kevin,
thanks for your reply and forwarding this message. I am referring to
Java with XWayland mainly.
We have an embedded device with i.MX8MP hardware platform. It is not
that easy to go for very recent Linux platform, a lot of dependencies to
hardware components. I already talked to the Wayland mailing list. It
was not clear what causes this issue. There is only a guess recent
builds could fix it.
I would like to understand this bug. Even if I do 'setReziable(false)'
Java does change the size. Maybe you know about some work-around, how I
can catch and block this behaviour?
According to XrandR output the resolution is correct (however the
XWAYLAND name changes from 0..2). This brings it closer to Java:
HDMI PLUGGED (on boot)
xrandr --current
Screen 0: minimum 16 x 16, current 1920 x 1080, maximum 32767 x 32767
XWAYLAND0 connected 1920x1080+0+0 (normal left inverted right x axis y
axis) 1110mm x 620mm
1920x1080 59.96*+
HDMI UNPLUGGED
xrandr --current
Screen 0: minimum 16 x 16, current 1920 x 1080, maximum 32767 x 32767
XWAYLAND1 connected 1920x1080+0+0 (normal left inverted right x axis y
axis) 1150mm x 650mm
1920x1080 59.96*+
HDMI RE-PLUGGED
xrandr --current
Screen 0: minimum 16 x 16, current 1920 x 1080, maximum 32767 x 32767
XWAYLAND2 connected 1920x1080+0+0 (normal left inverted right x axis y
axis) 1110mm x 620mm
1920x1080 59.96*+
Thanks,
Martin Petzold
Am 09.06.23 um 13:52 schrieb Kevin Rushforth:
[Redirected from jdk-dev]
You should be aware that Wayland is not a supported desktop platform.
Work is ongoing under the Wakefield [1] project to add such support,
but that is a longer term effort. Having said that, many thing should
already work, so you might try a more recent version of Java (JDK 20
or JDK 21 early-access) and see if your results are different.
Maybe others on this list will have comments about your specific issue.
-- Kevin
[1] https://openjdk.org/projects/wakefield/
On 6/9/2023 2:32 AM, Martin Petzold wrote:
I have a Java application running on:
XWayland 2:1.20.11-1+deb11u6, Weston 9.0.0-1, OpenJDK
11.0.18+10-1~deb11u1, Debian 11, Kernel 5.10.52
My JFrame (Window) is set
to:|GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(this);|
I can then see my interface on the full screen (in my case it is a TV
and I have CEC enabled in the Kernel). However, after I unplug HDMI
and plug HDMI again, my interface is gone (black screen). There is
only one small 1x1 pixel left. It seems the size of the Window is
changed by Java / XWayland / (Weston). I am sure, that I am not
changing it - I check all resize methods on JFrame.
When I restart my Java application, it is back again - so it is not
an issue of the OS (Linux) directly and also - most probably - not
Weston.
I also don't have this issue with a pure Wayland application (e.g.
Weston flower). Using only Wayland (without Java and XWayland) things
work.
When I PLUG the HDMI there is NO java.awt.event.ComponentEvent
When I UNPLUG HDMI, I get the following java.awt.event.ComponentEvent:
|java.awt.event.ComponentEvent[COMPONENT_RESIZED (0,0 1x1)] on frame0
java.base/java.lang.Thread.getStackTrace(Thread.java:1602)
java.desktop/java.awt.AWTEventMulticaster.componentResized(AWTEventMulticaster.java:167)
java.desktop/java.awt.AWTEventMulticaster.componentResized(AWTEventMulticaster.java:167)
java.desktop/java.awt.Component.processComponentEvent(Component.java:6461)
java.desktop/java.awt.Component.processEvent(Component.java:6415)
java.desktop/java.awt.Container.processEvent(Container.java:2263)
java.desktop/java.awt.Window.processEvent(Window.java:2049)
java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5011)
java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2772)
java.desktop/java.awt.Component.dispatchEvent(Component.java:4843)
java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
java.base/java.security.AccessController.doPrivileged(Native Method)
java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
java.base/java.security.AccessController.doPrivileged(Native Method)
java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
|
Unfortunately I also don't know how to manipulate the size after I
catched this event. I tried to directly set the size back, but this
did not work. I think it may don't work because at this time HDMI is
UNPLUGGED. Also, if I try to set the size back to normal once the
HDMI is plugged again, it does not work. I get overruled and the size
is then back to 1x1 pixel.
As I don't get any event when the HDMI is PLUGGED again, I also don't
know when to (try to) set the size back to "normal".
Thanks,
Martin