aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
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
2020-09-01Move list removal to seat/client destroyKenny Levinsen
2020-08-31client: Do not leak idle clients on exitKenny Levinsen
2020-08-31poller: Remember to remove sources from listKenny Levinsen
2020-08-31server: Remember to remove seat from listKenny Levinsen
2020-08-31test: Add test_run and test_assert macrosKenny Levinsen
test_run and test_assert replaces regular assert with better logging which include the currently running test name. The tests can now also be built without DEBUG.
2020-08-31Remove unused list implementationKenny Levinsen
2020-08-31poller: Convert to linked_listKenny Levinsen
2020-08-31linked_list: linked_list_take should concat listsKenny Levinsen
2020-08-31server: Convert seat list to linked_listKenny Levinsen
2020-08-31poller: Make event sources opaqueKenny Levinsen
2020-08-30seatd: Explicit cast -1 to unsigned gid_tKenny Levinsen
Silences a warning on some architectures.
2020-08-30seatd: Slight error handling cleanupKenny Levinsen
2020-08-30seatd: Remove unused device_closed msg bodyKenny Levinsen
2020-08-30linked_list: Implement linked_list_takeKenny Levinsen
2020-08-29seat: Destroy all clients on teardownKenny Levinsen
2020-08-29protocol: Add note to remove device_closed msgKenny Levinsen
The content of this message is unused, so it should be converted to a content-less message.
2020-08-29libseat: Check euid before using builtinKenny Levinsen
2020-08-29libseat: Remove pointless checkKenny Levinsen
2020-08-29libseat: Keep track of error stateKenny Levinsen
Store if an error has occurred and return -1 with ENOTCONN from all future calls, avoiding attempts to use a broken connection.
2020-08-29libseat: Improve logging with seatd conn helpersKenny Levinsen
Add helpers around connection access to have all logging centralized and reduce code duplication. Improve existing helpers to further reduce code duplication. The seatd backend should have much better logging after this.
2020-08-29libseat: Assert that listener is non-NULLKenny Levinsen
2020-08-28Bump version to 0.2.0Kenny Levinsen
2020-08-28logind: Merge PropertiesChanged handlersKenny Levinsen
2020-08-28libseat: Expand logging in all backendsKenny Levinsen
2020-08-28libseat: Only print backend attempts for matchesKenny Levinsen
2020-08-28terminal: Explain FreeBSD current_vt behaviorKenny Levinsen
2020-08-28terminal: Construct TTY paths correctly on FreeBSDKenny Levinsen
FreeBSD TTY paths are contructed in the kernel using the %r formatter, which in this case ends up being a base 32 encoding. The base 32 implementation is taken more or less directly from wlroots commit fc6c0ca12e94.
2020-08-28terminal: FreeBSD VT num is 1 higher than tty numKenny Levinsen
This was causing all VT and TTY changes to be applied to the wrong TTY.
2020-08-28terminal: Set K_RAW and term raw mode on FreeBSDKenny Levinsen
Taken from X11, weston and consolekit2 ports for FreeBSD. Setting just K_CODE as done before makes input seemingly have no ill effects, but it is still buffered and possibly send to the terminal after application exit if stdin is never drained. Setting raw mode appears to be needed to solve that issue. A K_OFF-like VT keyboard setting like Linux has would seem more appropriate, but that is not currently available to us on FreeBSD.
2020-08-28simpletest: Set log level to debugKenny Levinsen
2020-08-28Introduce libseat_set_log_levelSimon Ser
The default level is SILENT. log_init no longer takes an initial log level (so that calls to libseat_set_log_level prior to log_init work correctly).
2020-08-28Nuke LIBSEAT_LOGLEVELSimon Ser
This will be replaced with a libseat API to set the log level.
2020-08-28Introduce libseat_set_log_handlerSimon Ser
This allows libseat users to register a custom logging function.