pulseaudio-12.99.1

This commit is contained in:
Rex Dieter 2019-07-09 17:02:11 -05:00
parent ca8d119aad
commit 92cb195338
7 changed files with 9 additions and 412 deletions

1
.gitignore vendored
View File

@ -4,3 +4,4 @@
/pulseaudio-*.tar.xz.md5
/pulseaudio-*.tar.xz.sha1
/pulseaudio-12.2.tar.xz.sha256
/pulseaudio-12.99.1.tar.xz.sha256

View File

@ -1,40 +0,0 @@
From 0b3c52341d1d8d098f315302d6d3e1c40965493f Mon Sep 17 00:00:00 2001
From: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Date: Wed, 3 Jul 2019 17:09:51 +0300
Subject: [PATCH] alsa-sink: clear pollfd revents before poll
Always clear revents before calling snd_pcm_poll_descriptors_revents()
as the ALSA function will not clear out existing events.
Without this, playback restart fails in the following
scenario:
1. single stream PCM playback ongoing
2. system put to system suspend (S3), ALSA sink suspended
3. system resumes, ALSA sink restarted
4. upon first alsa-sink thread_func iteration, rtpoll
revents still hass POLLERR bits set (due to the suspend)
5. execution goes to pa_alsa_recover_from_poll()
6. snd_pcm_drop() is called and PCM is restarted
7. process loops from (4) and playback is never recovered
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
---
src/modules/alsa/alsa-sink.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
index 4568a19c5..d96f19398 100644
--- a/src/modules/alsa/alsa-sink.c
+++ b/src/modules/alsa/alsa-sink.c
@@ -1915,6 +1915,7 @@ static void thread_func(void *userdata) {
unsigned n;
pollfd = pa_rtpoll_item_get_pollfd(u->alsa_rtpoll_item, &n);
+ pollfd->revents = 0;
if ((err = snd_pcm_poll_descriptors_revents(u->pcm_handle, pollfd, n, &revents)) < 0) {
pa_log("snd_pcm_poll_descriptors_revents() failed: %s", pa_alsa_strerror(err));
--
2.21.0

View File

@ -1,181 +0,0 @@
From de705a0eeaa27a8ac1abdc2625e639340323595a Mon Sep 17 00:00:00 2001
From: Tanu Kaskinen <tanuk@iki.fi>
Date: Tue, 6 Mar 2018 15:09:06 +0200
Subject: [PATCH 08/77] set exit_idle_time to 0 when we detect a session
As the comments explain, this fixes relogin problems on some systems
that remove our sockets on logout without terminating the daemon.
---
man/pulse-daemon.conf.5.xml.in | 15 ++++++++++++---
man/pulseaudio.1.xml.in | 17 +++++++++++++++--
src/modules/module-console-kit.c | 13 +++++++++++++
src/modules/module-systemd-login.c | 14 ++++++++++++++
src/modules/x11/module-x11-xsmp.c | 13 +++++++++++++
src/pulsecore/core.c | 10 ++++++++++
src/pulsecore/core.h | 2 ++
7 files changed, 79 insertions(+), 5 deletions(-)
diff --git a/man/pulse-daemon.conf.5.xml.in b/man/pulse-daemon.conf.5.xml.in
index f0550f3b..f49fa9b0 100644
--- a/man/pulse-daemon.conf.5.xml.in
+++ b/man/pulse-daemon.conf.5.xml.in
@@ -292,9 +292,18 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<option>
<p><opt>exit-idle-time=</opt> Terminate the daemon after the
last client quit and this time in seconds passed. Use a negative value to
- disable this feature. Defaults to 20. The
- <opt>--exit-idle-time</opt> command line option takes
- precedence.</p>
+ disable this feature. Defaults to 20. The <opt>--exit-idle-time</opt>
+ command line option takes precedence.</p>
+
+ <p>When PulseAudio runs in the per-user mode and detects a login
+ session, then any positive value will be reset to 0 so that PulseAudio
+ will terminate immediately on logout. A positive value therefore has
+ effect only in environments where there's no support for login session
+ tracking. A negative value can still be used to disable any automatic
+ exit.</p>
+
+ <p>When PulseAudio runs in the system mode, automatic exit is always
+ disabled, so this option does nothing.</p>
</option>
<option>
diff --git a/man/pulseaudio.1.xml.in b/man/pulseaudio.1.xml.in
index f732b8ae..824eddb4 100644
--- a/man/pulseaudio.1.xml.in
+++ b/man/pulseaudio.1.xml.in
@@ -189,8 +189,21 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
<option>
<p><opt>--exit-idle-time</opt><arg>=SECS</arg></p>
- <optdesc><p>Terminate the daemon when idle and the specified
- number of seconds passed.</p></optdesc>
+ <optdesc>
+ <p>Terminate the daemon after the last client quit and this time in
+ seconds passed. Use a negative value to disable this feature. Defaults
+ to 20.</p>
+
+ <p>When PulseAudio runs in the per-user mode and detects a login
+ session, then any positive value will be reset to 0 so that PulseAudio
+ will terminate immediately on logout. A positive value therefore has
+ effect only in environments where there's no support for login session
+ tracking. A negative value can still be used to disable any automatic
+ exit.</p>
+
+ <p>When PulseAudio runs in the system mode, automatic exit is always
+ disabled, so this option does nothing.</p>
+ </optdesc>
</option>
<option>
diff --git a/src/modules/module-console-kit.c b/src/modules/module-console-kit.c
index c7938849..c8fe2ed2 100644
--- a/src/modules/module-console-kit.c
+++ b/src/modules/module-console-kit.c
@@ -118,6 +118,19 @@ static void add_session(struct userdata *u, const char *id) {
pa_log_debug("Added new session %s", id);
+ /* Positive exit_idle_time is only useful when we have no session tracking
+ * capability, so we can set it to 0 now that we have detected a session.
+ * The benefit of setting exit_idle_time to 0 is that pulseaudio will exit
+ * immediately when the session ends. That in turn is useful, because some
+ * systems (those that use pam_systemd but don't use systemd for managing
+ * pulseaudio) clean $XDG_RUNTIME_DIR on logout, but fail to terminate all
+ * services that depend on the files in $XDG_RUNTIME_DIR. The directory
+ * contains our sockets, and if the sockets are removed without terminating
+ * pulseaudio, a quick relogin will likely cause trouble, because a new
+ * instance will be spawned while the old instance is still running. */
+ if (u->core->exit_idle_time > 0)
+ pa_core_set_exit_idle_time(u->core, 0);
+
fail:
if (m)
diff --git a/src/modules/module-systemd-login.c b/src/modules/module-systemd-login.c
index 87981592..51401575 100644
--- a/src/modules/module-systemd-login.c
+++ b/src/modules/module-systemd-login.c
@@ -84,6 +84,20 @@ static int add_session(struct userdata *u, const char *id) {
pa_hashmap_put(u->sessions, session->id, session);
pa_log_debug("Added new session %s", id);
+
+ /* Positive exit_idle_time is only useful when we have no session tracking
+ * capability, so we can set it to 0 now that we have detected a session.
+ * The benefit of setting exit_idle_time to 0 is that pulseaudio will exit
+ * immediately when the session ends. That in turn is useful, because some
+ * systems (those that use pam_systemd but don't use systemd for managing
+ * pulseaudio) clean $XDG_RUNTIME_DIR on logout, but fail to terminate all
+ * services that depend on the files in $XDG_RUNTIME_DIR. The directory
+ * contains our sockets, and if the sockets are removed without terminating
+ * pulseaudio, a quick relogin will likely cause trouble, because a new
+ * instance will be spawned while the old instance is still running. */
+ if (u->core->exit_idle_time > 0)
+ pa_core_set_exit_idle_time(u->core, 0);
+
return 0;
}
diff --git a/src/modules/x11/module-x11-xsmp.c b/src/modules/x11/module-x11-xsmp.c
index 0238e516..6f801237 100644
--- a/src/modules/x11/module-x11-xsmp.c
+++ b/src/modules/x11/module-x11-xsmp.c
@@ -206,6 +206,19 @@ int pa__init(pa_module*m) {
if (!u->client)
goto fail;
+ /* Positive exit_idle_time is only useful when we have no session tracking
+ * capability, so we can set it to 0 now that we have detected a session.
+ * The benefit of setting exit_idle_time to 0 is that pulseaudio will exit
+ * immediately when the session ends. That in turn is useful, because some
+ * systems (those that use pam_systemd but don't use systemd for managing
+ * pulseaudio) clean $XDG_RUNTIME_DIR on logout, but fail to terminate all
+ * services that depend on the files in $XDG_RUNTIME_DIR. The directory
+ * contains our sockets, and if the sockets are removed without terminating
+ * pulseaudio, a quick relogin will likely cause trouble, because a new
+ * instance will be spawned while the old instance is still running. */
+ if (u->core->exit_idle_time > 0)
+ pa_core_set_exit_idle_time(u->core, 0);
+
pa_modargs_free(ma);
return 0;
diff --git a/src/pulsecore/core.c b/src/pulsecore/core.c
index 79abbc04..da42a13e 100644
--- a/src/pulsecore/core.c
+++ b/src/pulsecore/core.c
@@ -426,6 +426,16 @@ void pa_core_update_default_source(pa_core *core) {
pa_hook_fire(&core->hooks[PA_CORE_HOOK_DEFAULT_SOURCE_CHANGED], core->default_source);
}
+void pa_core_set_exit_idle_time(pa_core *core, int time) {
+ pa_assert(core);
+
+ if (time == core->exit_idle_time)
+ return;
+
+ pa_log_info("exit_idle_time: %i -> %i", core->exit_idle_time, time);
+ core->exit_idle_time = time;
+}
+
static void exit_callback(pa_mainloop_api *m, pa_time_event *e, const struct timeval *t, void *userdata) {
pa_core *c = userdata;
pa_assert(c->exit_event == e);
diff --git a/src/pulsecore/core.h b/src/pulsecore/core.h
index 213964ce..38622f61 100644
--- a/src/pulsecore/core.h
+++ b/src/pulsecore/core.h
@@ -258,6 +258,8 @@ void pa_core_set_configured_default_source(pa_core *core, const char *source);
void pa_core_update_default_sink(pa_core *core);
void pa_core_update_default_source(pa_core *core);
+void pa_core_set_exit_idle_time(pa_core *core, int time);
+
/* Check whether no one is connected to this core */
void pa_core_check_idle(pa_core *c);
--
2.17.1

View File

@ -1,130 +0,0 @@
From 993d3fd89e5611997f1e165bf03edefb0204b0a4 Mon Sep 17 00:00:00 2001
From: Olaf Hering <olaf@aepfle.de>
Date: Wed, 27 Mar 2019 09:35:05 +0100
Subject: [PATCH 287/375] alsa: Use correct header path
Consumers are expected to use <alsa/asoundlib.h> instead of
<asoundlib.h>.
This is in preparation of an change to pkgconfig(alsa) to
not pollute CFLAGS with -I/usr/include/alsa anymore.
Signed-off-by: Olaf Hering <olaf@aepfle.de>
---
src/modules/alsa/alsa-mixer.c | 2 +-
src/modules/alsa/alsa-mixer.h | 2 +-
src/modules/alsa/alsa-sink.c | 2 +-
src/modules/alsa/alsa-source.c | 2 +-
src/modules/alsa/alsa-ucm.c | 2 +-
src/modules/alsa/alsa-util.c | 2 +-
src/modules/alsa/alsa-util.h | 2 +-
src/modules/alsa/module-alsa-source.c | 2 +-
8 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c
index 5cb99c8fd..cd99a75f8 100644
--- a/src/modules/alsa/alsa-mixer.c
+++ b/src/modules/alsa/alsa-mixer.c
@@ -23,7 +23,7 @@
#endif
#include <sys/types.h>
-#include <asoundlib.h>
+#include <alsa/asoundlib.h>
#include <math.h>
#ifdef HAVE_VALGRIND_MEMCHECK_H
diff --git a/src/modules/alsa/alsa-mixer.h b/src/modules/alsa/alsa-mixer.h
index 3ea4d7329..65b071165 100644
--- a/src/modules/alsa/alsa-mixer.h
+++ b/src/modules/alsa/alsa-mixer.h
@@ -21,7 +21,7 @@
along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
***/
-#include <asoundlib.h>
+#include <alsa/asoundlib.h>
#include <pulse/sample.h>
#include <pulse/mainloop-api.h>
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
index 28143402a..4b46708ce 100644
--- a/src/modules/alsa/alsa-sink.c
+++ b/src/modules/alsa/alsa-sink.c
@@ -25,7 +25,7 @@
#include <signal.h>
#include <stdio.h>
-#include <asoundlib.h>
+#include <alsa/asoundlib.h>
#ifdef HAVE_VALGRIND_MEMCHECK_H
#include <valgrind/memcheck.h>
diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
index 8129220b0..c8bf649e1 100644
--- a/src/modules/alsa/alsa-source.c
+++ b/src/modules/alsa/alsa-source.c
@@ -25,7 +25,7 @@
#include <signal.h>
#include <stdio.h>
-#include <asoundlib.h>
+#include <alsa/asoundlib.h>
#include <pulse/rtclock.h>
#include <pulse/timeval.h>
diff --git a/src/modules/alsa/alsa-ucm.c b/src/modules/alsa/alsa-ucm.c
index 341c8012e..0a40ca8fe 100644
--- a/src/modules/alsa/alsa-ucm.c
+++ b/src/modules/alsa/alsa-ucm.c
@@ -27,7 +27,7 @@
#include <ctype.h>
#include <sys/types.h>
#include <limits.h>
-#include <asoundlib.h>
+#include <alsa/asoundlib.h>
#ifdef HAVE_VALGRIND_MEMCHECK_H
#include <valgrind/memcheck.h>
diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c
index e8d712e72..bd0a47e50 100644
--- a/src/modules/alsa/alsa-util.c
+++ b/src/modules/alsa/alsa-util.c
@@ -23,7 +23,7 @@
#endif
#include <sys/types.h>
-#include <asoundlib.h>
+#include <alsa/asoundlib.h>
#include <pulse/sample.h>
#include <pulse/xmalloc.h>
diff --git a/src/modules/alsa/alsa-util.h b/src/modules/alsa/alsa-util.h
index 6b27339ec..4ceaa06ee 100644
--- a/src/modules/alsa/alsa-util.h
+++ b/src/modules/alsa/alsa-util.h
@@ -21,7 +21,7 @@
along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
***/
-#include <asoundlib.h>
+#include <alsa/asoundlib.h>
#include <pulse/sample.h>
#include <pulse/channelmap.h>
diff --git a/src/modules/alsa/module-alsa-source.c b/src/modules/alsa/module-alsa-source.c
index af6800dd2..747ba9342 100644
--- a/src/modules/alsa/module-alsa-source.c
+++ b/src/modules/alsa/module-alsa-source.c
@@ -24,7 +24,7 @@
#include <stdio.h>
-#include <asoundlib.h>
+#include <alsa/asoundlib.h>
#ifdef HAVE_VALGRIND_MEMCHECK_H
#include <valgrind/memcheck.h>
--
2.21.0

View File

@ -1,45 +0,0 @@
From b89d33bb182c42db5ad3987b0e91b7bf62f421e8 Mon Sep 17 00:00:00 2001
From: Takashi Iwai <tiwai@suse.de>
Date: Sun, 21 Apr 2019 11:59:30 +0200
Subject: [PATCH 304/375] alsa: Fix inclusion of use-case.h
The recent change in ALSA upstream stripped -I$include/alsa path from
pkgconfig. We already fixed for this change in some places but still
the code for UCM was overlooked, and this resulted in the unresolved
symbols in alsa card module. Fix them as well.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
configure.ac | 2 +-
src/modules/alsa/alsa-ucm.h | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/configure.ac b/configure.ac
index c004bd70d..b44ed1595 100644
--- a/configure.ac
+++ b/configure.ac
@@ -826,7 +826,7 @@ AS_IF([test "x$enable_alsa" = "xyes" && test "x$HAVE_ALSA" = "x0"],
AS_IF([test "x$HAVE_ALSA" = "x1"],
[
save_CPPFLAGS="$CPPFLAGS"; CPPFLAGS="$CPPFLAGS $ASOUNDLIB_CFLAGS"
- AC_CHECK_HEADERS([use-case.h], HAVE_ALSA_UCM=1, HAVE_ALSA_UCM=0)
+ AC_CHECK_HEADERS([alsa/use-case.h], HAVE_ALSA_UCM=1, HAVE_ALSA_UCM=0)
CPPFLAGS="$save_CPPFLAGS"
],
HAVE_ALSA_UCM=0)
diff --git a/src/modules/alsa/alsa-ucm.h b/src/modules/alsa/alsa-ucm.h
index 53abf3f90..c926f3cc3 100644
--- a/src/modules/alsa/alsa-ucm.h
+++ b/src/modules/alsa/alsa-ucm.h
@@ -23,7 +23,7 @@
***/
#ifdef HAVE_ALSA_UCM
-#include <use-case.h>
+#include <alsa/use-case.h>
#else
typedef void snd_use_case_mgr_t;
#endif
--
2.21.0

View File

@ -1,5 +1,5 @@
%global pa_major 12.2
#global pa_minor 0
%global pa_major 12.99
%global pa_minor 1
#global snap 20180411
#global gitrel 129
@ -31,7 +31,7 @@
Name: pulseaudio
Summary: Improved Linux Sound Server
Version: %{pa_major}%{?pa_minor:.%{pa_minor}}
Release: 7%{?snap:.%{snap}git%{shortcommit}}%{?dist}
Release: 1%{?snap:.%{snap}git%{shortcommit}}%{?dist}
License: LGPLv2+
URL: http://www.freedesktop.org/wiki/Software/PulseAudio
%if 0%{?gitrel}
@ -62,14 +62,8 @@ Patch203: pulseaudio-12.2-qpaeq_python2.patch
Patch206: pulseaudio-11.1-autospawn_disable.patch
## upstream patches
Patch8: 0008-set-exit_idle_time-to-0-when-we-detect-a-session.patch
Patch287: 0287-alsa-Use-correct-header-path.patch
Patch304: 0304-alsa-Fix-inclusion-of-use-case.h.patch
## upstreamable patches
# https://lists.freedesktop.org/archives/pulseaudio-discuss/2019-July/031257.html
# can be dropped for future releases
Patch501: 0001-alsa-sink-clear-pollfd-revents-before-poll.patch
BuildRequires: automake libtool
BuildRequires: gcc-c++
@ -263,9 +257,6 @@ This package contains GDM integration hooks for the PulseAudio sound server.
%setup -q -T -b0 -n %{name}-%{version}%{?gitrel:-%{gitrel}-g%{shortcommit}}
## upstream patches
%patch8 -p1 -b .0008
%patch287 -p1 -b .0287
%patch304 -p1 -b .0304
## upstreamable patches
@ -276,8 +267,6 @@ This package contains GDM integration hooks for the PulseAudio sound server.
%patch206 -p1 -b .autospawn_disable
%endif
%patch501 -p1
sed -i.no_consolekit -e \
's/^load-module module-console-kit/#load-module module-console-kit/' \
src/daemon/default.pa.in
@ -667,6 +656,9 @@ systemctl --no-reload preset --global pulseaudio.socket >/dev/null 2>&1 || :
%changelog
* Tue Jul 09 2019 Rex Dieter <rdieter@fedoraproject.org> - 12.99.1-1
- pulseaudio-12.99.1
* Wed Jul 03 2019 Rex Dieter <rdieter@fedoraproject.org> - 12.2-7
- alsa-sink: clear pollfd revents before poll

View File

@ -1,2 +1,2 @@
SHA512 (pulseaudio-12.2.tar.xz) = 877754c1838b3cb042dbc18a5f1cc3cf313ffcaee7a64703330406d1f86279c34f1107634ac3083b158365e6757fbacf5ec406bc3c5788d291de67b77a561a4e
SHA512 (pulseaudio-12.2.tar.xz.sha256) = 95f3c5c1f1b7ee96d6f6cefc963bc4e17bd800c6583c1c79d1cdb35917a7a643b41501bb5465edf401aa81dd180ac93312145de805aa183473720a0839419c26
SHA512 (pulseaudio-12.99.1.tar.xz) = 213bf07b6c3822a5184ecbaf5655387ad49794b3643cad37ec7f1f0ebc348af70855df2ee407bae8db279642de375b89eb7a2ca3f2015fc934f465bb952957dd
SHA512 (pulseaudio-12.99.1.tar.xz.sha256) = 8f6c0aa3a204a72f8f6bfb6154202af9b0244482f46f790aacbea7aeaccd49ed4df77b35ab50cd84c32f5a3326a74a0284a48e69ac69df9630a56907562b7d4d