diff options
author | Lennart Poettering <lennart@poettering.net> | 2009-04-13 22:28:35 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2009-04-13 22:28:35 +0200 |
commit | 0ac038e5913959910d854e9e015a9406c1976eca (patch) | |
tree | fce00bf05110ae63205c1aab9c3f91be2654d843 /src/pulse | |
parent | 0aed5ea2e109e0d4b2ffdbff5f3dc944eb34d7e8 (diff) |
client-conf-x11: unbreak autospawn due to stale X11 properties
If the X11 property data is from the same session than the client the
client may do autospawning in case the X11 property data is stale.
Closes #518.
Diffstat (limited to 'src/pulse')
-rw-r--r-- | src/pulse/client-conf-x11.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/pulse/client-conf-x11.c b/src/pulse/client-conf-x11.c index 3bec742f..4970363b 100644 --- a/src/pulse/client-conf-x11.c +++ b/src/pulse/client-conf-x11.c @@ -57,8 +57,23 @@ int pa_client_conf_from_x11(pa_client_conf *c, const char *dname) { } if (pa_x11_get_prop(d, "PULSE_SERVER", t, sizeof(t))) { + pa_bool_t disable_autospawn = TRUE; + pa_xfree(c->default_server); c->default_server = pa_xstrdup(t); + + if (pa_x11_get_prop(d, "PULSE_SESSION_ID", t, sizeof(t))) { + char *id; + + if ((id = pa_session_id())) { + if (pa_streq(t, id)) + disable_autospawn = FALSE; + pa_xfree(id); + } + } + + if (disable_autospawn) + c->autospawn = FALSE; } if (pa_x11_get_prop(d, "PULSE_SINK", t, sizeof(t))) { |