aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-02-27seatd: Set errno in seat_add_clientKenny Levinsen
2021-02-27logind: Fix return values from close_device/get_fdKenny Levinsen
2021-02-27libseat: Fix typo in doc stringKenny Levinsen
2021-02-27meson: ignore 'man-pages' if 'server' is disabledAleksei Bavshin
`seatd.1` is the only man page, so it's not necessary to install it or require scdoc when the server is not built.
2021-02-27seatd: Tear down VT when disabled client closesKenny Levinsen
If a client closed while it was disabled, the VT would not be torn down. If the user navigated back to the VT it belonged to, they would be stuck. When a client is disabled, open the fd for the VT it belonged to and perform regular teardown on it.
2021-02-27client: Replace pending_disable with state enumKenny Levinsen
This simplifies logic in seat handling.
2021-02-02seat: Remove unused arg from seat_deactive_deviceKenny Levinsen
2020-12-23logind: Send ReleaseControl when closing seatKenny Levinsen
This is not strictly speaking necessary as detaching from the bus should trigger this automatically, but elogind apparently has issues with this. Doing this explicitly does no harm, so let's just do that.
2020-12-14simpletest: Close fd after closing deviceKenny Levinsen
2020-12-10client: Fix typo in cr_pid usageKenny Levinsen
2020-12-08client: Use cr_pid if availableKenny Levinsen
This is only available on FreeBSD 13, so test for that version.
2020-12-08client: Do not use SOL_SOCKET for LOCAL_PEERCREDKenny Levinsen
This is wrong, and leads to LOCAL_PEERCRED being interpreted as SO_DEBUG. 0 should be used instead. See: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=246189.
2020-12-04libseat/backend/logind: stop waiting for CanGraphicalSimon Ser
Upstream says compositors should wait for DRM nodes using udev instead.
2020-11-24logind: switch_session should return 0 on successKenny Levinsen
It currently returned -1 on failure and 1 on success. The API is intended to return -1 on failure and 0 on success, so fix that.
2020-11-23terminal: Improve loggingKenny Levinsen
2020-11-23client: More robust handling of client linksKenny Levinsen
2020-11-23poller: Retry poll immediately on EINTRKenny Levinsen
There is nothing for us to dispatch unless we wake on an fd, so just retry poll if it fails with EINTR instead of doing a full dispatch loop.
2020-11-21libseat: log error when failing to open socketIsaac Freund
The most common pain point I've seen with people trying out seat is forgetting to add themselves to whatever group the distro has chosen to own the socket. Logging this error and path of the socket should make it easier to tell why things aren't working.
2020-11-03ci: Clean up build manifestsKenny Levinsen
2020-10-19Bump version to 0.4.0Kenny Levinsen
2020-10-16readme: Update mailing list linkKenny Levinsen
2020-10-12connection: Add unittestKenny Levinsen
2020-10-11libseat: Better error reporting from open_seatKenny Levinsen
2020-10-11logind: clang-formatKenny Levinsen
2020-10-10logind: Use seat_path for SwitchToKenny Levinsen
2020-09-28logind: close_device should not close fdKenny Levinsen
2020-09-22seat: Only close VT if no new session was foundKenny Levinsen
2020-09-22terminal: Ack both release and acquireKenny Levinsen
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.
2020-09-22seat: Use current VT for switch and ackKenny Levinsen
2020-09-22terminal: Fix VT numbering on FreeBSDKenny Levinsen
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.
2020-09-22libseat/seatd: Fix socket path boundsKenny Levinsen
2020-09-22meson: Make default seatd socket path configurableKenny Levinsen
FreeBSD and Linux have different preferred socket locations. Expose an option to set the location, and implement simple auto-logic for linux/freebsd.
2020-09-22drm: Relax drm file detection, support FreeBSDKenny Levinsen
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/.
2020-09-22poller: Add unittestKenny Levinsen
2020-09-22libseat: Execute bg events after IPC callsKenny Levinsen
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.
2020-09-22libseat: Dispatch all non-bg events on IPC callKenny Levinsen
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.
2020-09-22seatd: Log on exitKenny Levinsen
2020-09-22seat: Reuse deactivate logic, more loggingKenny Levinsen
2020-09-22seat: Plug leak of deactivated fdsKenny Levinsen
Only if a device had an fd and was active would an fd be closed. As devices are deactivated early on session switch, this lead to fd leakage. Close fds regardless of active state.
2020-09-22seat: Rework seat activation/switch logicKenny Levinsen
The seat activation logic did not correctly handle VT switching and switching between multiple sessions. Session switching on VT-bound seats is now performed using a VT switch, taking advantage of VT signals to perform the actual switch. This simplifies switching logic and makes it more robust.
2020-09-22client: Remove unnecessary active_client checkKenny Levinsen
2020-09-22poller: Raise signals through self-pipeKenny Levinsen
Signal handling relied on poll(2) being interrupted by signals, followed by a check for signal handlers flagging a signal as received. This only allowed signals that were received during poll(2) to be handled correctly. Implement the usual self-pipe implementation, where signal handlers write an arbitrary byte to a polled file descriptor to ensure proper level-triggered signal handling.
2020-09-08Bump version to 0.3.0Kenny Levinsen
2020-09-08libseat: Version the .so fileKenny Levinsen
2020-09-07man: Mention assistance from other contributorsKenny Levinsen
2020-09-07libseat: Handle SERVER_ERROR correctlyKenny Levinsen
The connection buffer position was erroneously rewinded before reading the protocol message when the message was a SERVER_ERROR.
2020-09-01meson: fix manpage generation for cross buildsIsaac Freund
We want to use the scdoc of the host system not the target system, so pass the `native: true` parameter to meson.
2020-09-01client: Only unlink if on the idle listKenny Levinsen
2020-09-01ci: ASan smoketest on FreeBSDKenny Levinsen
2020-09-01ci: ASan all build steps on archKenny Levinsen