Accepting request 731255 from multimedia:libs

OBS-URL: https://build.opensuse.org/request/show/731255
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/pulseaudio?expand=0&rev=163
This commit is contained in:
Yuchen Lin 2019-09-21 15:27:10 +00:00 committed by Git OBS Bridge
commit 02c93d3923
7 changed files with 112 additions and 268 deletions

View File

@ -1,113 +0,0 @@
From: Tanu Kaskinen <tanuk@iki.fi>
Subject: [PATCH] set exit-idle-time to 0 when we detect a session
Date: Wed, 28 Feb 2018 18:16:03 +0200
Message-Id: <20180228161603.30746-1-tanuk@iki.fi>
As the comments explain, this fixes relogin problems on some systems
that remove our sockets on logout without terminating the daemon.
---
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 ++
5 files changed, 52 insertions(+)
--- a/src/modules/module-console-kit.c
+++ b/src/modules/module-console-kit.c
@@ -120,6 +120,19 @@ static void add_session(struct userdata
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)
--- a/src/modules/module-systemd-login.c
+++ b/src/modules/module-systemd-login.c
@@ -86,6 +86,20 @@ static int add_session(struct userdata *
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;
}
--- a/src/modules/x11/module-x11-xsmp.c
+++ b/src/modules/x11/module-x11-xsmp.c
@@ -208,6 +208,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;
--- a/src/pulsecore/core.c
+++ b/src/pulsecore/core.c
@@ -426,6 +426,16 @@ void pa_core_update_default_source(pa_co
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);
--- a/src/pulsecore/core.h
+++ b/src/pulsecore/core.h
@@ -254,6 +254,8 @@ void pa_core_set_configured_default_sour
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);

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:809668ffc296043779c984f53461c2b3987a45b7a25eb2f0a1d11d9f23ba4055
size 1665092

3
pulseaudio-13.0.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:961b23ca1acfd28f2bc87414c27bb40e12436efcf2158d29721b1e89f3f28057
size 1901768

View File

@ -1,123 +0,0 @@
---
configure.ac | 2 +-
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-ucm.h | 2 +-
src/modules/alsa/alsa-util.c | 2 +-
src/modules/alsa/alsa-util.h | 2 +-
src/modules/alsa/module-alsa-source.c | 2 +-
10 files changed, 10 insertions(+), 10 deletions(-)
--- 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
--- 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>
--- 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>
--- 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>
--- 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>
--- 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>
--- 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>
--- 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>
--- a/configure.ac
+++ b/configure.ac
@@ -833,7 +833,7 @@ AS_IF([test "x$enable_alsa" = "xyes" &&
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)
--- 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

View File

@ -0,0 +1,15 @@
---
src/daemon/systemd/user/pulseaudio.service.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/src/daemon/systemd/user/pulseaudio.service.in
+++ b/src/daemon/systemd/user/pulseaudio.service.in
@@ -24,7 +24,7 @@ NoNewPrivileges=yes
Restart=on-failure
RestrictNamespaces=yes
SystemCallArchitectures=native
-SystemCallFilter=@system-service
+# SystemCallFilter=@system-service
# Note that notify will only work if --daemonize=no
Type=notify
UMask=0077

View File

@ -1,3 +1,64 @@
-------------------------------------------------------------------
Mon Sep 16 08:42:14 UTC 2019 - Bjørn Lie <bjorn.lie@gmail.com>
- Update to version 13.0:
* Added support for Dolby TrueHD and DTS-HD Master Audio
* Improved initial card profile selection for ALSA cards
* Bluetooth card profile choices aren't persistent any more by
default.
* Added support for SteelSeries Arctis 5 USB headset.
* New "max_latency_msec" module argument for module-loopback.
* New "stream_name" module argument for module-rtp-send.
* Fixed S/PDIF for CMEDIA USB2.0 High-Speed True HD Audio.
* Use source sample spec and channel map by default in
module-loopback.
* New "avoid_resampling" module argument for module-udev-detect
and module-alsa-card.
* "avoid_resampling" also tries to avoid format conversion if the
ALSA device supports it.
* New function to enable realtime scheduling for client threads.
* Removed BlueZ 4 support.
* Dropped intltool.
* Introduction of the Meson build system.
* Const-ification of parameters across headers.
* Minor bug-fixes, bindings updates.
* Updated translations.
- Update drvver to 13.0.
-------------------------------------------------------------------
Sat Sep 7 23:14:50 UTC 2019 - Bjørn Lie <bjorn.lie@gmail.com>
- Use make_build macros.
-------------------------------------------------------------------
Tue Aug 27 15:43:10 CEST 2019 - tiwai@suse.de
- Workaround for old systemd on Leap 15.x, as the recent hardening
relies on the new systemd:
pulseaudio-old-systemd-workaround.patch
-------------------------------------------------------------------
Tue Aug 6 20:18:24 UTC 2019 - Ondrej Holecek <oholecek@suse.com>
- Update to 13 RC2 (12.99.2)
* Added support for Dolby TrueHD and DTS-HD Master Audio
* Improved initial card profile selection for ALSA cards
* Bluetooth card profile choices aren't persistent any more by default
* Added support for SteelSeries Arctis 5 USB headset
* New "max_latency_msec" module argument for module-loopback
* New "stream_name" module argument for module-rtp-send
* Fixed S/PDIF for CMEDIA USB2.0 High-Speed True HD Audio
* Use source sample spec and channel map by default in module-loopback
* New "avoid_resampling" module argument for module-udev-detect and module-alsa-card
* New function to enable realtime scheduling for client threads
* Removed BlueZ 4 support
* Dropped intltool
* Some initial work on a Meson build system
* https://www.freedesktop.org/wiki/Software/PulseAudio/Notes/13.0/
- Removed patches already included in the source:
pulseaudio-alsa.patch
pa-set-exit-idle-time-to-0-when-we-detect-a-session.patch
-------------------------------------------------------------------
Thu Jul 11 17:50:21 UTC 2019 - Antoine Belvire <antoine.belvire@opensuse.org>

View File

@ -21,12 +21,12 @@
%define _fillupdir /var/adm/fillup-templates
%endif
%define drvver 12.2
%define drvver 13.0
%define soname 0
%define _udevrulesdir %(pkg-config --variable=udevdir udev)/rules.d
%define _bashcompletionsdir %{_datadir}/bash-completion/completions
Name: pulseaudio
Version: 12.2
Version: 13.0
Release: 0
Summary: A Networked Sound Server
License: GPL-2.0-or-later AND LGPL-2.1-or-later
@ -45,17 +45,16 @@ Source99: baselibs.conf
Patch0: disabled-start.diff
Patch1: suppress-socket-error-msg.diff
Patch2: pulseaudio-wrong-memset.patch
Patch3: pulseaudio-alsa.patch
Patch4: pa-set-exit-idle-time-to-0-when-we-detect-a-session.patch
# PATCH-FIX-OPENSUSE qpaeq-shebang.patch Avoid rpmlint error due to using env python shebang
Patch5: qpaeq-shebang.patch
# PATCH-FIX-OPENSUSE Workaround for old systemd on Leap 15.x
Patch6: pulseaudio-old-systemd-workaround.patch
BuildRequires: alsa-devel >= 1.0.19
BuildRequires: bluez-devel >= 5
BuildRequires: doxygen
BuildRequires: fdupes
BuildRequires: fftw3-devel >= 3.0
BuildRequires: gcc-c++
BuildRequires: intltool
BuildRequires: jack-devel
BuildRequires: libatomic_ops-devel >= 1.2
BuildRequires: libavahi-devel
@ -88,6 +87,7 @@ BuildRequires: pkgconfig(x11)
BuildRequires: pkgconfig(x11-xcb)
BuildRequires: pkgconfig(xcb)
BuildRequires: pkgconfig(xtst)
Requires: rtkit
Requires: udev >= 146
## needs the same liborc version which was used to build against
@ -95,7 +95,6 @@ Requires: udev >= 146
Requires(post): %fillup_prereq
Requires(pre): group(audio)
Requires(pre): shadow
Recommends: %{name}-bash-completion
Recommends: %{name}-lang
Recommends: alsa-plugins-pulse
Suggests: libsoxr0 >= 0.1.1
@ -319,6 +318,7 @@ Summary: PulseAudio Bash completion
Group: System/Shells
Requires: %{name}-utils = %{version}
Requires: bash-completion
Supplements: packageand(pulseaudio:bash)
%description bash-completion
Optional dependency offering bash completion for various PulseAudio utilities
@ -328,6 +328,7 @@ Summary: PulseAudio zsh completion
Group: System/Shells
Requires: %{name}-utils = %{version}
Requires: zsh
Supplements: packageand(pulseaudio:zsh)
%description zsh-completion
Optional dependency offering zsh completion for various PulseAudio utilities
@ -339,9 +340,11 @@ Optional dependency offering zsh completion for various PulseAudio utilities
%patch0
%patch1 -p1
%patch2
%patch3 -p1
%patch4 -p1
%patch5
# workaround for Leap 15.x
%if 0%{?suse_version} < 1550
%patch6 -p1
%endif
%build
%define _lto_cflags %{nil}
@ -350,33 +353,33 @@ echo 'HTML_TIMESTAMP=NO' >> doxygen/doxygen.conf.in
export LDFLAGS="-pie"
export CFLAGS="%{optflags} -fPIE"
%configure \
--disable-static \
--disable-rpath \
--disable-static \
--disable-rpath \
%ifarch armv5tel armv6hl
--disable-neon-opt \
--disable-neon-opt \
%endif
--with-system-user=pulse \
--with-system-group=pulse \
--with-access-group=pulse-access \
--disable-hal-compat \
--disable-bluez4 \
--enable-webrtc-aec \
--enable-adrian-aec \
--enable-gconf \
--enable-gsettings \
--with-udev-rules-dir=%{_udevrulesdir} \
--with-pulsedsp-location='%{_prefix}/\\$$LIB/pulseaudio' \
--with-systemduserunitdir=%{_userunitdir}
make %{?_smp_mflags} V=1
make %{?_smp_mflags} doxygen
--with-system-user=pulse \
--with-system-group=pulse \
--with-access-group=pulse-access \
--disable-hal-compat \
--disable-bluez4 \
--enable-webrtc-aec \
--enable-adrian-aec \
--enable-gconf \
--enable-gsettings \
--with-udev-rules-dir=%{_udevrulesdir} \
--with-pulsedsp-location='%{_prefix}/\\$$LIB/pulseaudio' \
--with-systemduserunitdir=%{_userunitdir} \
%{nil}
%make_build
%make_build doxygen
%install
%make_install
rm -rf \
"%{buildroot}%{_libdir}"/*.la \
"%{buildroot}%{_libdir}/pulse-%{drvver}/modules"/*.la \
"%{buildroot}%{_libdir}/pulseaudio"/*.la
"%{buildroot}%{_libdir}"/*.la \
"%{buildroot}%{_libdir}/pulse-%{drvver}/modules"/*.la \
"%{buildroot}%{_libdir}/pulseaudio"/*.la
# configure --disable-static had no effect; delete manually.
rm -rf "%{buildroot}%{_libdir}"/*.a
@ -690,6 +693,7 @@ exit 0
%{_libdir}/pulse-%{drvver}/modules/module-zeroconf-publish.so
%files utils
%{_bindir}/pa-info
%{_bindir}/pacat
%{_bindir}/pacmd
%{_bindir}/pactl