[systemd-devel] gdm's PulseAudio not exiting.

Colin Guthrie gmane at colin.guthr.ie
Mon Sep 3 10:43:41 PDT 2012

'Twas brillig, and Colin Guthrie at 03/09/12 14:47 did gyre and gimble:
> [colin at jimmy systemd-189]$ cat /run/systemd/users/492
> # This is private data. Do not parse.
> NAME=gdm
> STATE=online
> CGROUP=/user/gdm
> RUNTIME=/run/user/492
> SEATS=seat0
> It does not seem to reflect anything to do with the fact that the
> session is closing.
> So, how can I differentiate between an State=active session and a
> State=closing one via the sd_* methods?
> Does something extra need to get added to this env var and a new API
> method added to sd-login.c to cope with this?
> I would propose that STATE= variable gets updated to "closing" here (if
> possible) and that sd_uid_get_sessions() is modified such that passing a
> require_active value of 2 (or -1?) would only return if a session is
> both SESSIONS=(>=1) and STATE=(active|online).
> Alternatively, we could just make uid_get_array() always require that
> STATE=(active|online) and make that hard coded.

I realise this suggestion is not possible, as the STATE= value here is
aggregate over multiple sessions.

I thus change the proposal to add a new variable to the env file:


This is very similar to SESSIONS= but will exclude any sessions in the
closing state.

The implementation of sd_uid_get_sessions() can then either be changed
to search for ONLINE_SESSIONS= vs. ACTIVE_SESSIONS=, or the
require_active value can be end up with three values: 0 == SESSIONS, 1

Either that or a new function: sd_uid_get_online_sessions() be used
instead. Personally I actually prefer the three-value approach as it
degrades somewhat nicely.

Opinions welcome.



Colin Guthrie

Day Job:
  Tribalogic Limited http://www.tribalogic.net/
Open Source:
  Mageia Contributor http://www.mageia.org/
  PulseAudio Hacker http://www.pulseaudio.org/
  Trac Hacker http://trac.edgewall.org/

More information about the systemd-devel mailing list