aboutsummaryrefslogtreecommitdiff
path: root/backend/session
AgeCommit message (Collapse)Author
2019-11-03session/logind: Clean up add_signal_matchesScott Anderson
The original signal matching was using the old interface before sd_bus_match_signal was added, which the new code uses. Change them all to use it now.
2019-11-03session/logind: support CanGraphical propertyRonan Pigott
2019-08-12backend/session: non-void function should return a valueAntonin Décimo
With assertions disabled, it should make sense to return NULL.
2019-07-27Remove all wayland-server.h includesSimon Ser
The documentation for wayland-server.h says: > Use of this header file is discouraged. Prefer including > wayland-server-core.h instead, which does not include the server protocol > header and as such only defines the library PI, excluding the deprecated API > below. Replacing wayland-server.h with wayland-server-core.h allows us to drop the WL_HIDE_DEPRECATED declaration.
2019-05-22session/logind: check for XDG_SESSION_ID firstJan Chren
In order to support compositors running as systemd user units without display manager, a mechanism for specifying session ID exactly must exist. Checking for `XDG_SESSION_ID` mimics loginctl behaviour https://github.com/systemd/systemd/blob/e95be7def26c6c5feaf08a4135aa4f50c53263a8/src/login/loginctl.c#L856.
2019-05-22session/logind: specify seat exactlyJan Chren
"/org/freedesktop/login1/seat/self" path triggers seat-finding code path in logind, which currently relies on getting the session based on caller's PID. This behaviour is deprecated in logind as it doesn't work eg. with systemd user units, which run outside of user session. We check for "seat0" in logind_change_vt() already as introduced in 47985d2dc56a6af469ac9375e7548136765aff16, so hard-coding it here is not a problem, otherwise sd_session_get_seat() could be used.
2019-05-13session/logind: keep active for pause_device goneBrian Ashworth
This appears to be a quick fix for compositors freezing when a dock is disconnected. Disconnection of the dock is causing `pause_device` for the DRM devices associated with the dock. Since these devices major number is `DRM_MAJOR`, the session was being set to inactive. This just makes it so the session is not set to inactive when the device's state is `gone`.
2019-03-06backend/session: Allow setting a custom tty via WLR_DIRECT_TTYNiklas Schulze
2019-03-05backend/session: open TTY with O_CLOEXEC for direct sessionemersion
2019-03-02backend/session: add noop sessionemersion
This is the first step towards being able to run via DRM leasing and on render nodes. Test with: export WLR_BACKENDS=drm export WLR_SESSION=noop export WLR_DRM_DEVICES=/dev/dri/renderD128
2019-03-01meson: enable more compiler warningsemersion
2019-02-03Allow compositors to run as systemd user unitsmnussbaum
When a wlroots compositor runs as a systemd user unit there is no session associated with the compositor process. Instead we need to attach to an active and graphical user session. This change first looks for an available session for the process, and if there isn't one falls back to display in the oldest available graphical session. This work was modeled after a similar change to mutter - https://gitlab.gnome.org/GNOME/mutter/merge_requests/150.
2019-01-31backend/session/logind: dup FD with CLOEXECemersion
2019-01-07Simplify evdev includes on FreeBSD by relying on up-to-date packageJan Beich
As evdev-proto is installed by CI some files have been missed: ../examples/pointer-constraints.c:2:10: fatal error: 'linux/input-event-codes.h' file not found #include <linux/input-event-codes.h> ^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../examples/relative-pointer-unstable-v1.c:5:10: fatal error: 'linux/input-event-codes.h' file not found #include <linux/input-event-codes.h> ^~~~~~~~~~~~~~~~~~~~~~~~~~~
2018-12-06backend/session/logind: improve loggingemersion
2018-11-12Use #if instead of #ifdef for wlroots config dataemersion
This prevents some annoying issues when e.g. not including wlr/config.h or making a typo in the guard name.
2018-10-04Use sd_bus_get_property_trivial & remove numberingnyorain
2018-09-24Rework session handlingnyorain
Sessions can now be retrieved from a backend in a more general manner. Multi-backend gets back its `session` field that contains the session if one was created, removing the interfacing from multi backend with the drm backend directly. This adds the possibility to use sessions even without the drm backend. It additionally fixes the bug that 2 session objects got created when WLR_BACKENDS were set to "libinput,drm". To allow vt switching without drm backend (and drm fd) on logind, start listening to PropertiesChanged signals from dbus and parse the session "Active" property when no master fd was created (this does not change current drm backend behaviour in any way).
2018-09-21Apply multiseat fixes to FreeBSD direct backendsghctoma
This commit applies the multiseat fixes that are part of PR #1063 ( commits 964e0a50 and 47895d2) to the FreeBSD direct backend.
2018-09-18backend/session: add assertionsemersion
2018-09-18Add support for WLR_SESSION env variablerandom human
Valid values are "logind"/"systemd" and "direct". If WLR_SESSION is set, only its value is potentially tried; it will not try any other option.
2018-09-07Fix build failure on non-FreeBSD systemssghctoma
Accidentally included the FreeBSD-specific dev/evdev/input.h file on other systems too. This commit fixes that.
2018-09-07Implement device type discovery using ioctl callssghctoma
This commit implements device type discovery by calling two ioctls (DRM_IOCTL_VERSION and EVIOCGVERSION) on the device. These iocts are specific to drm and input devices respectively, therefore we can determine the device type based on which one returns an error.
2018-09-02Activate last active VT after compositor exitsghctoma
The VT the compositor was started from was not activated after exiting the compositor, which resulted in arriving on a blank VT. This commit fixes that by introducing a new field in direct_session struct that stores the last active VT so that it can be activated in direct_session_destroy.
2018-08-30Fix that major(st_rdev) have no meaning on FreeBSDsghctoma
The major device number does not indicate the device type on FreeBSD, and AFAIK the only way to differentiate between DRM, input, and other devices is checking the fd path. This commit implements that. The drmDropmaster and drmSetmaster calls are necessary, because the implicit drop (that should occur when the DRM fd is closed) seems not to be working in some scenarios (e.g. if you have a tmux session running - maybe the fd is retained somehow by tmux?). This is a problem, because once you exit the compositor, you can't start it (or any other program that wants to be DRM master) again until you close all your tmux sessions.
2018-08-27Init the new destroy signals added by #1200Alexander Bakker
2018-08-26Add destroy signals to types that are destroyed by wl_display_destroyAlexander Bakker
2018-08-08session: load GPU devices even if they have zero crtcs/connectors/encodersIlia Bozhinov
On some systems (most notably laptops with two GPUs) there are GPUs that don't have attached outputs. However, we still want to load those GPUs because they could still be used by the compositor for rendering.
2018-07-21Revert "Merge pull request #1153 from emersion/include-config"Drew DeVault
This reverts commit ef0a6ea4d2934ec014d791150c42348061ec4f7f, reversing changes made to 8d03bc9178d8544cbcd24293ece6ac9f1698e602.
2018-07-21Always include config.hemersion
2018-07-09util: add wlr_ prefix to log symbolsemersion
2018-07-01Close fd's obtained from logindVincent Vanlaer
2018-06-30direct session backend: fix closing -1 on errorDominique Martinet
Found through static analysis
2018-06-20FIX: Suprocess loops endlessly when the control socket closes.Tobias Blass
recvmsg(3) returns 0 if the connection partner has shut down its socket. The communicate function considered 0 a successful message, though, and keeps calling recvmsg(3) again and again.
2018-06-14Check for seat0 properlyScott Anderson
2018-06-14Multiseat fixesScott Anderson
2018-02-19Revert "ELF Visibility"Drew DeVault
2018-02-19Explicitly export EFL symbolsScott Anderson
2018-02-12Reformat all #include directivesemersion
2018-02-12Make wlr_signal_emit_safe privateemersion
2018-02-12Add wlr_signal_emit_safeemersion
2018-01-21style: add comment to empty while loop in logind.cJohannes Schramm
2018-01-21style: include brackets for if/while/for, even if it's a single statementJohannes Schramm
2018-01-02fix build without systemdPoroCYon
2017-12-27config: Avoid clash with other config-headersBjörn Esser
2017-12-26config: Put all defines into config.hBjörn Esser
2017-12-08Listen to display destroy in sessionemersion
It's not the backend's responsibility to destroy the session anymore.
2017-12-02Fix style and string comparisonn3rdopolis
2017-12-02Attempt to fix #454n3rdopolis
With logind, only seat0 can use TTYs
2017-11-22Use SIGUSR2 for vt switching instead of SIGUSR1Greg V
Xwayland uses SIGUSR1 to signal readiness. With direct(-freebsd) session and Xwayland, wlroots was confusing the Xwayland readiness signal with a vt switch signal, freezing the desktop. Same problem was found in Weston in 2014: https://phabricator.freedesktop.org/T7080