commit d02c96ea355338be56d87356cebe18bfb20a2942
Author: overweight <5324761+overweight@user.noreply.gitee.com>
Date: Mon Sep 30 11:14:19 2019 -0400
Package init
diff --git a/0008-set-exit_idle_time-to-0-when-we-detect-a-session.patch b/0008-set-exit_idle_time-to-0-when-we-detect-a-session.patch
new file mode 100644
index 0000000..045ab55
--- /dev/null
+++ b/0008-set-exit_idle_time-to-0-when-we-detect-a-session.patch
@@ -0,0 +1,181 @@
+From de705a0eeaa27a8ac1abdc2625e639340323595a Mon Sep 17 00:00:00 2001
+From: Tanu Kaskinen
+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 .
+
+ exit-idle-time= 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
+- --exit-idle-time command line option takes
+- precedence.
++ disable this feature. Defaults to 20. The --exit-idle-time
++ command line option takes precedence.
++
++ 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.
++
++ When PulseAudio runs in the system mode, automatic exit is always
++ disabled, so this option does nothing.
+
+
+
+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 .
+
+ --exit-idle-time =SECS
+
+- Terminate the daemon when idle and the specified
+- number of seconds passed.
++
++ 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.
++
++ 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.
++
++ When PulseAudio runs in the system mode, automatic exit is always
++ disabled, so this option does nothing.
++
+
+
+
+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
+
diff --git a/default.pa-for-gdm b/default.pa-for-gdm
new file mode 100644
index 0000000..d633aee
--- /dev/null
+++ b/default.pa-for-gdm
@@ -0,0 +1,10 @@
+load-module module-device-restore
+load-module module-card-restore
+load-module module-udev-detect
+load-module module-native-protocol-unix
+load-module module-default-device-restore
+load-module module-rescue-streams
+load-module module-always-sink
+load-module module-intended-roles
+load-module module-suspend-on-idle
+load-module module-position-event-sounds
diff --git a/pulseaudio-12.2.tar.xz b/pulseaudio-12.2.tar.xz
new file mode 100644
index 0000000..63fd6e5
Binary files /dev/null and b/pulseaudio-12.2.tar.xz differ
diff --git a/pulseaudio-12.2.tar.xz.sha256 b/pulseaudio-12.2.tar.xz.sha256
new file mode 100644
index 0000000..6d94eca
--- /dev/null
+++ b/pulseaudio-12.2.tar.xz.sha256
@@ -0,0 +1 @@
+809668ffc296043779c984f53461c2b3987a45b7a25eb2f0a1d11d9f23ba4055 pulseaudio-12.2.tar.xz
diff --git a/pulseaudio-9.0-disable_flat_volumes.patch b/pulseaudio-9.0-disable_flat_volumes.patch
new file mode 100644
index 0000000..3e489d6
--- /dev/null
+++ b/pulseaudio-9.0-disable_flat_volumes.patch
@@ -0,0 +1,48 @@
+diff -up pulseaudio-8.99.2/man/pulse-daemon.conf.5.xml.in.disable_flat_volumes pulseaudio-8.99.2/man/pulse-daemon.conf.5.xml.in
+--- pulseaudio-8.99.2/man/pulse-daemon.conf.5.xml.in.disable_flat_volumes 2016-05-26 23:21:17.000000000 -0500
++++ pulseaudio-8.99.2/man/pulse-daemon.conf.5.xml.in 2016-05-31 10:01:55.679976730 -0500
+@@ -220,7 +220,7 @@ License along with PulseAudio; if not, s
+ flat-volumes= Enable 'flat' volumes, i.e. where
+ possible let the sink volume equal the maximum of the volumes of
+ the inputs connected to it. Takes a boolean argument, defaults
+- to yes .
++ to no .
+
+
+
+diff -up pulseaudio-8.99.2/src/daemon/daemon-conf.c.disable_flat_volumes pulseaudio-8.99.2/src/daemon/daemon-conf.c
+--- pulseaudio-8.99.2/src/daemon/daemon-conf.c.disable_flat_volumes 2016-05-26 23:21:17.000000000 -0500
++++ pulseaudio-8.99.2/src/daemon/daemon-conf.c 2016-05-31 10:01:55.680976735 -0500
+@@ -68,7 +68,7 @@ static const pa_daemon_conf default_conf
+ .realtime_priority = 5, /* Half of JACK's default rtprio */
+ .disallow_module_loading = false,
+ .disallow_exit = false,
+- .flat_volumes = true,
++ .flat_volumes = false,
+ .exit_idle_time = 20,
+ .scache_idle_time = 20,
+ .script_commands = NULL,
+diff -up pulseaudio-8.99.2/src/daemon/daemon.conf.in.disable_flat_volumes pulseaudio-8.99.2/src/daemon/daemon.conf.in
+--- pulseaudio-8.99.2/src/daemon/daemon.conf.in.disable_flat_volumes 2016-05-31 10:01:55.680976735 -0500
++++ pulseaudio-8.99.2/src/daemon/daemon.conf.in 2016-05-31 10:02:28.048133267 -0500
+@@ -57,7 +57,7 @@ ifelse(@HAVE_DBUS@, 1, [dnl
+ ; enable-lfe-remixing = no
+ ; lfe-crossover-freq = 0
+
+-; flat-volumes = yes
++; flat-volumes = no
+
+ ifelse(@HAVE_SYS_RESOURCE_H@, 1, [dnl
+ ; rlimit-fsize = -1
+diff -up pulseaudio-8.99.2/src/pulsecore/core.c.disable_flat_volumes pulseaudio-8.99.2/src/pulsecore/core.c
+--- pulseaudio-8.99.2/src/pulsecore/core.c.disable_flat_volumes 2016-05-26 23:21:17.000000000 -0500
++++ pulseaudio-8.99.2/src/pulsecore/core.c 2016-05-31 10:01:55.681976740 -0500
+@@ -135,7 +135,7 @@ pa_core* pa_core_new(pa_mainloop_api *m,
+ c->exit_idle_time = -1;
+ c->scache_idle_time = 20;
+
+- c->flat_volumes = true;
++ c->flat_volumes = false;
+ c->disallow_module_loading = false;
+ c->disallow_exit = false;
+ c->running_as_daemon = false;
diff --git a/pulseaudio-autostart.patch b/pulseaudio-autostart.patch
new file mode 100644
index 0000000..eb44bdb
--- /dev/null
+++ b/pulseaudio-autostart.patch
@@ -0,0 +1,13 @@
+diff -up pulseaudio-6.0/src/daemon/start-pulseaudio-x11.in.autostart pulseaudio-6.0/src/daemon/start-pulseaudio-x11.in
+--- pulseaudio-6.0/src/daemon/start-pulseaudio-x11.in.autostart 2015-02-12 08:10:35.000000000 -0600
++++ pulseaudio-6.0/src/daemon/start-pulseaudio-x11.in 2015-06-22 11:24:13.561614127 -0500
+@@ -17,6 +17,9 @@
+
+ set -e
+
++# probe to test if autospawn works, else resort to starting manually
++@PACTL_BINARY@ info > /dev/null 2>&1 || @PA_BINARY@ --start "$@"
++
+ if [ x"$DISPLAY" != x ] ; then
+
+ @PACTL_BINARY@ load-module module-x11-publish "display=$DISPLAY" > /dev/null
diff --git a/pulseaudio.spec b/pulseaudio.spec
new file mode 100644
index 0000000..b1f4e99
--- /dev/null
+++ b/pulseaudio.spec
@@ -0,0 +1,204 @@
+%undefine _strict_symbol_defs_build
+
+%global multilib_archs x86_64 %{ix86}
+%global bash_completionsdir %(pkg-config --variable=completionsdir bash-completion 2>/dev/null || echo '/etc/bash_completion.d')
+
+Name: pulseaudio
+Summary: Improved Linux Sound Server
+Version: 12.2
+Release: 2
+License: LGPLv2+
+URL: https://www.freedesktop.org/wiki/Software/PulseAudio
+Source0: https://freedesktop.org/software/pulseaudio/releases/pulseaudio-%{version}.tar.xz
+Source1: https://freedesktop.org/software/pulseaudio/releases/pulseaudio-%{version}.tar.xz.sha256
+Source5: default.pa-for-gdm
+
+Patch201: pulseaudio-autostart.patch
+Patch202: pulseaudio-9.0-disable_flat_volumes.patch
+#From: Tanu Kaskinen
+Patch8: 0008-set-exit_idle_time-to-0-when-we-detect-a-session.patch
+
+BuildRequires: automake libtool gcc-c++ bash-completion
+BuildRequires: m4 libtool-ltdl-devel intltool pkgconfig doxygen xmltoman libsndfile-devel
+BuildRequires: alsa-lib-devel glib2-devel gtk2-devel GConf2-devel avahi-devel check-devel
+BuildRequires: libatomic_ops-static libatomic_ops-devel bluez-libs-devel sbc-devel libXt-devel
+BuildRequires: xorg-x11-proto-devel libXtst-devel libXi-devel libSM-devel libX11-devel
+BuildRequires: libICE-devel xcb-util-devel openssl-devel orc-devel libtdb-devel speexdsp-devel
+BuildRequires: libasyncns-devel systemd-devel systemd dbus-devel libcap-devel fftw-devel
+BuildRequires: webrtc-audio-processing-devel
+
+Obsoletes: padevchooser < 1.0
+Provides: %{name}-module-x11 %{name}-module-bluetooth %{name}-libs %{name}-libs-glib2 %{name}-utils %{name}-esound-compat %{name}-module-zeroconf %{name}-module-gconf %{name}-module-gsettings
+Obsoletes: %{name}-module-x11 %{name}-module-bluetooth %{name}-libs %{name}-libs-glib2 %{name}-utils %{name}-esound-compat %{name}-module-zeroconf %{name}-module-gconf %{name}-module-gsettings
+
+Requires(pre): shadow-utils
+Requires: rtkit bluez >= 5.0
+
+%description
+PulseAudio is a sound server for Linux and other Unix like operating
+systems. It is intended to be an improved drop-in replacement for the
+Enlightened Sound Daemon (ESOUND).
+
+%package qpaeq
+Summary: Pulseaudio equalizer interface
+Requires: %{name} = %{version}-%{release}
+Requires: python2-qt5 dbus-python
+%description qpaeq
+qpaeq is a equalizer interface for pulseaudio's equalizer sinks.
+
+%package devel
+Summary: Headers and libraries for PulseAudio client development
+License: LGPLv2+
+Requires: %{name} = %{version}-%{release}
+Provides: %{name}-libs-devel
+Obsoletes: %{name}-libs-devel
+
+%description devel
+Headers and libraries for developing applications that can communicate with
+a PulseAudio sound server.
+
+%package gdm-hooks
+Summary: PulseAudio GDM integration
+License: LGPLv2+
+Requires: gdm >= 1:2.22.0
+Requires(pre): gdm
+
+%description gdm-hooks
+This package contains GDM integration hooks for the PulseAudio sound server.
+
+%package_help
+
+%prep
+%autosetup -n %{name}-%{version} -p1
+
+sed -i.no_consolekit -e \
+ 's/^load-module module-console-kit/#load-module module-console-kit/' \
+ src/daemon/default.pa.in
+
+NOCONFIGURE=1 ./bootstrap.sh
+
+%build
+%configure \
+ --disable-silent-rules --disable-rpath --with-system-user=pulse \
+ --with-system-group=pulse --with-access-group=pulse-access \
+ --disable-oss-output --disable-jack --disable-lirc \
+ --disable-bluez4 --enable-bluez5 --enable-gconf \
+ --enable-gsettings --enable-webrtc-aec --enable-tests
+
+%make_build V=1
+
+make doxygen
+
+%install
+%make_install
+
+%ifarch %{multilib_archs}
+pushd %{buildroot}%{_bindir}
+%if "%{_libdir}" == "/usr/lib"
+ln -s padsp padsp-32
+%else
+cp -a padsp padsp-32
+sed -i -e "s|%{_libdir}/pulseaudio/libpulsedsp.so|/usr/lib/pulseaudio/libpulsedsp.so|g" padsp-32
+%endif
+popd
+%endif
+
+mkdir -p $RPM_BUILD_ROOT%{_prefix}/lib/udev/rules.d
+mv -fv $RPM_BUILD_ROOT/lib/udev/rules.d/90-pulseaudio.rules $RPM_BUILD_ROOT%{_prefix}/lib/udev/rules.d
+
+install -p -m644 -D %{SOURCE5} $RPM_BUILD_ROOT%{_localstatedir}/lib/gdm/.pulse/default.pa
+
+%delete_la
+
+%check
+%make_build check || TESTS_ERROR=$?
+if [ "${TESTS_ERROR}" != "" ]; then
+cat src/test-suite.log
+exit $TESTS_ERROR
+fi
+
+%pre
+getent group pulse-access >/dev/null || groupadd -r pulse-access
+getent group pulse-rt >/dev/null || groupadd -r pulse-rt
+getent group pulse >/dev/null || groupadd -f -g 171 -r pulse
+if ! getent passwd pulse >/dev/null ; then
+ if ! getent passwd 171 >/dev/null ; then
+ useradd -r -u 171 -g pulse -d %{_localstatedir}/run/pulse -s /sbin/nologin -c "PulseAudio System Daemon" pulse
+ else
+ useradd -r -g pulse -d %{_localstatedir}/run/pulse -s /sbin/nologin -c "PulseAudio System Daemon" pulse
+ fi
+fi
+exit 0
+
+%posttrans
+(grep '^load-module module-cork-music-on-phone$' %{_sysconfdir}/pulse/default.pa > /dev/null && \
+ sed -i.rpmsave -e 's|^load-module module-cork-music-on-phone$|load-module module-role-cork|' \
+ %{_sysconfdir}/pulse/default.pa
+) ||:
+
+%ldconfig_scriptlets
+
+%files
+%defattr(-,root,root)
+%license LICENSE GPL LGPL
+%config(noreplace) %{_sysconfdir}/pulse/daemon.conf
+%config(noreplace) %{_sysconfdir}/pulse/*.pa
+%config(noreplace) %{_sysconfdir}/pulse/client.conf
+%{_sysconfdir}/dbus-1/system.d/pulseaudio-system.conf
+%{_sysconfdir}/xdg/autostart/pulseaudio.desktop
+%{bash_completionsdir}/*
+%{_userunitdir}/pulseaudio.*
+%{_bindir}/esdcompat
+%{_bindir}/pulseaudio
+%{_bindir}/start-pulseaudio-x11
+%{_bindir}/pacat
+%{_bindir}/pacmd
+%{_bindir}/pactl
+%{_bindir}/paplay
+%{_bindir}/parec
+%{_bindir}/pamon
+%{_bindir}/parecord
+%{_bindir}/pax11publish
+%{_bindir}/padsp
+%{_bindir}/pasuspender
+%ifarch %{multilib_archs}
+%{_bindir}/padsp-32
+%endif
+%{_libdir}/*.so.*
+%{_libdir}/pulseaudio/*.so
+%{_libdir}/pulse-%{version}/modules/*.so
+%exclude %{_libdir}/pulse-%{version}/modules/module-equalizer-sink.so
+%exclude %{_libdir}/pulse-%{version}/modules/module-detect.so
+
+%{_prefix}/lib/udev/rules.d/90-pulseaudio.rules
+%{_libexecdir}/pulse/*-helper
+%{_datadir}/locale/*
+%{_datadir}/pulseaudio/alsa-mixer/*/
+%{_datadir}/zsh/site-functions/_pulseaudio
+%{_datadir}/GConf/gsettings/pulseaudio.convert
+
+%files qpaeq
+%defattr(-,root,root)
+%{_bindir}/qpaeq
+%{_libdir}/pulse-%{version}/modules/module-equalizer-sink.so
+
+%files devel
+%defattr(-,root,root)
+%{_includedir}/pulse/
+%{_libdir}/*.so
+%{_libdir}/pkgconfig/*.pc
+%{_datadir}/vala/vapi/*
+%{_libdir}/cmake/PulseAudio/
+
+%files gdm-hooks
+%attr(0600,gdm,gdm) %{_localstatedir}/lib/gdm/.pulse/default.pa
+
+%files help
+%defattr(-,root,root)
+%doc README doxygen/html
+%{_mandir}/man*/*
+%{_datadir}/glib-2.0/schemas/org.freedesktop.pulseaudio.gschema.xml
+
+%changelog
+* Mon Sep 16 2019 openEuler Buildteam - 12.2-2
+- Package init