~kennylevinsen/seatd

Expose session ID in libseat API

This sends the seatd session ID to a seatd client, and exposes this in
the API. It is currently stubbed out for logind.
seatd: Set errno in seat_add_client
seatd: Add seat selection to open_seat message

This allows the client application to request a seat.
ci: Clean up build manifests
Bump version to 0.4.0
readme: Update mailing list link
connection: Add unittest
libseat: Better error reporting from open_seat
logind: clang-format
logind: Use seat_path for SwitchTo
logind: close_device should not close fd
seat: Only close VT if no new session was found
terminal: Ack both release and acquire

Linux only requires acking release and ignores ack of acquire, but
FreeBSD is more stringent and will patiently wait for both to be acked.

Implement proper acking for both events.
seat: Use current VT for switch and ack
terminal: Fix VT numbering on FreeBSD

FreeBSD adds one to the VT number returned by the GET_ACTIVE ioctl, so
to match things up, the wrapper here subtracted by one. This lead to
ttyv0 being named VT 0. This had the side-effect of VT numbering not
matching expectations, and switching not behaving as intended.

Align numbers with expectations, and move the required subtraction to
terminal_open, so that VT 1 matches ttyv0.
libseat/seatd: Fix socket path bounds
meson: Make default seatd socket path configurable

FreeBSD and Linux have different preferred socket locations. Expose an
option to set the location, and implement simple auto-logic for
linux/freebsd.
drm: Relax drm file detection, support FreeBSD

Path check was done on /dev/dri/card and /dev/dri/renderD. However,
/dev/dri/by-path is a thing, and on FreeBSD, /dev/dri/ symlinks to
/dev/drm/.

Relax Linux check to /dev/dri/, and add FreeBSD check for /dev/drm/.
poller: Add unittest
libseat: Execute bg events after IPC calls

If a background event was queued during call dispatch, and no unread
data was left on the socket, there would be no incentive for the user to
call dispatch, and as a result, the events would never be executed.

Execute events at the end of IPC calls that read from the socket to
avoid stalls.
libseat: Dispatch all non-bg events on IPC call

Dispatch on IPC call only dispatched until the first message was
successfully processed. This could lead to premature dispatch
termination if a background event was received during an IPC call.

Instead, continue dispatching until a non-bg opcode is reported or an
error is received.
Next