Planning on releasing wayland-utils 1.2.0 tomorrow

2023-06-07 Thread Olivier Fourdan
Hi all,

It's been several months since we released wayland-utils 1.1.0 and
several improvements to wayland-info have found their way since then.

There is no important change pending in gitlab, so I reckon now would
be a good time for a new release of wayland-utils.

So unless someone speaks up and voices against it, I plan to release
wayland-utils 1.2.0 tomorrow.

Cheers
Olivier



Why does Java (XWayland / Weston) resize a Window to 1x1 pixel when HDMI is unplugged (and does not resize back when HDMI is plugged)

2023-06-07 Thread Martin Petzold
I guess I have an issue with XWayland (but maybe Weston / Linux). It is 
very specific and I kindly ask for help.


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 
then 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 
checked 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.


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


[ANNOUNCE] libei 1.0.0

2023-06-07 Thread Peter Hutterer

libei 1.0.0 is now available.


libei is a library to send Emulated Input (EI) to a matching Emulated Input
Server (EIS) which can receive those events with libeis, also part of this
project.

libei uses GitLab releases, for tarballs please see:
https://gitlab.freedesktop.org/libinput/libei/-/releases/1.0.0

# Changes:

Note that there is one minor protocol change (`ei_connection.sync`) and
one ABI (not API) change in libeis since the RC2 despite previous
statements that the protocol and API are stable. In both cases it was
better to do it now while every user of libei(s) is still in draft than
having to special-case those instances for the next 10 years.
An rebuild will take care of of the ABI change, making sure libei and
libeis are both on 1.0.0 will take care of the protocol change.

Notable changes since RC2:

- meson requirements dropped back to 0.56 to allow for building on older distros
- Protocol
  - ei_connection.sync now takes a version argument to allow for
future updates of the ei_callback interface. This is a protocol
change.
  - the ei-scanner now exposes interface_arg + interface_arg_for
and version_arg + version_arg_for to allow for better handling
of arguments that refer to interfaces or versions, respectively
- Library:
  - The enum eis_event_type was synced with libei so identical events
(e.g. EI_EVENT_FRAME and EIS_EVENT_FRAME) have the same enum
value in both libraries. This fixes commit e6954b76d. This is an ABI
break, a rebuild will take care of it.
  - sending an ei_device_scroll_discrete event with value 1 now logs a
bug. This typically indicates a bug in the caller and the value
should be a fraction or multiple of 120 instead.
  - a few missing functions are now public: eis_region_contains(),
eis_region_get_physical_scale(), eis_device_get_context(),
eis_seat_get_context(), eis_device_get_width() and
eis_device_get_height()
  - libeis *for now* sends all negotiated interface versions back to the
client during the initial handshake. This isn't required by the
protocol but it ensures those parts of any new client are working
correctly.

Please see the documentation here: https://libinput.pages.freedesktop.org/libei/

The git shortlog is below

Ian Douglas Scott (2):
  ei-scanner: Fix `--jinja-extra-data-file`, and make `mypy` check pass
  ei-scanner: Expose `interface_arg`, and also provide `interface_arg_for`

Peter Hutterer (39):
  meson.build: drop requirements back to 0.56
  CI: add a build test for our minimum meson version
  scanner: rework the main() function into something easier to test
  scanner: add tests for the extra data arguments
  ei-scanner: expose `version_arg` and `version_arg_for`
  proto: add a version argument to ei_connection.sync
  libei: check incoming objects' version for correctness
  libeis: check incoming objects' version for correctness
  log: remove trailing linebreaks from log messages
  Log a bug if a client tries to send a discrete value 1
  CI: add a comment to the meson build helper
  Remove unimplemented ei_device_get_keymap()
  ei: ei_device_get_width/height need to be public APIs
  doc: change the doxygen oeffis group to liboeffis
  tools: make the demo client send the correct discrete events
  eis: expose eis_device_get_context() and eis_seat_get_context()
  test: use the callback's version instead of hardcoding it a second time
  Correct a meaningless comment
  eis: sync event codes with libei
  CI: use meson setup in the abi check job
  CI: fix the ABI check job, it was using the wrong HEAD
  eis: add eis_region_get_physical_scale
  eis: expose eis_region_contains
  ei: more docs that data is in pixels or mm
  test: drop ifdef'd out test
  test: add tests for the eis region getters
  CI: remove a copy/pasted MESON_ARGS from the abicheck job
  ci: add a check that our event values cannot diverge
  test: check that the width/height are set for physical devices
  ei: remove unused ei_pingpong_new()
  tests: add tests for button events
  ei: removed unused ei_callback_new_for_id
  eis: send all our interface versions to the client
  test: add a unit test for ei_region_convert_point
  ei: fix a whitespace error
  test: don't over-ref the button/scroll devices
  test: add test for correct ei_device_close behavior
  test: ensure all returned interface versions are 1
  libei 1.0.0


signature.asc
Description: PGP signature