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
deleted file mode 100644
index 045ab5567d8d60819bdf537b899dde405beaac63..0000000000000000000000000000000000000000
--- a/0008-set-exit_idle_time-to-0-when-we-detect-a-session.patch
+++ /dev/null
@@ -1,181 +0,0 @@
-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/pulseaudio-13.0.tar.xz b/pulseaudio-13.0.tar.xz
deleted file mode 100644
index ad9c21492044dfbac7d2b6af7ff002c893958b69..0000000000000000000000000000000000000000
Binary files a/pulseaudio-13.0.tar.xz and /dev/null differ
diff --git a/pulseaudio-13.0.tar.xz.sha256 b/pulseaudio-13.0.tar.xz.sha256
deleted file mode 100644
index 866010f433770663360fa7686f3ff40390f031cf..0000000000000000000000000000000000000000
--- a/pulseaudio-13.0.tar.xz.sha256
+++ /dev/null
@@ -1 +0,0 @@
-961b23ca1acfd28f2bc87414c27bb40e12436efcf2158d29721b1e89f3f28057 pulseaudio-13.0.tar.xz
diff --git a/pulseaudio-15.0.tar.xz b/pulseaudio-15.0.tar.xz
new file mode 100644
index 0000000000000000000000000000000000000000..b01c23ac74e04c66d9c7643951fa53d60603f969
Binary files /dev/null and b/pulseaudio-15.0.tar.xz differ
diff --git a/pulseaudio-15.0.tar.xz.sha256sum b/pulseaudio-15.0.tar.xz.sha256sum
new file mode 100644
index 0000000000000000000000000000000000000000..97a155628fd8a2d79f2cf2176a286db44e1d620f
--- /dev/null
+++ b/pulseaudio-15.0.tar.xz.sha256sum
@@ -0,0 +1 @@
+a40b887a3ba98cc26976eb11bdb6613988f145b19024d1b6555c6a03c9cba1a0 *pulseaudio-15.0.tar.xz
diff --git a/pulseaudio-9.0-disable_flat_volumes.patch b/pulseaudio-9.0-disable_flat_volumes.patch
deleted file mode 100644
index 3e489d60e836be380fbc2dd4007a89dd4e072050..0000000000000000000000000000000000000000
--- a/pulseaudio-9.0-disable_flat_volumes.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-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
index eb44bdbc7e9f58845129aac85d630898dbd9d71f..33535d77d79d1c77fff45dea41f58776735af318 100644
--- a/pulseaudio-autostart.patch
+++ b/pulseaudio-autostart.patch
@@ -1,6 +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
+
+
+---
+ src/daemon/start-pulseaudio-x11.in | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/daemon/start-pulseaudio-x11.in b/src/daemon/start-pulseaudio-x11.in
+index 722a639..7cdf14e 100755
+--- a/src/daemon/start-pulseaudio-x11.in
++++ b/src/daemon/start-pulseaudio-x11.in
@@ -17,6 +17,9 @@
set -e
@@ -8,6 +15,9 @@ diff -up pulseaudio-6.0/src/daemon/start-pulseaudio-x11.in.autostart pulseaudio-
+# 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
+ if [ -n "$1" ] ; then
+ case $1 in
+ stop)
+--
+2.27.0
+
diff --git a/pulseaudio.spec b/pulseaudio.spec
index bbded3921f8b2992137609c474b87d55bc61ce6f..9964ac8ebd877ea2ffedc26a73a61e19c4d556e0 100644
--- a/pulseaudio.spec
+++ b/pulseaudio.spec
@@ -5,17 +5,17 @@
Name: pulseaudio
Summary: Improved Linux Sound Server
-Version: 13.0
-Release: 4
+Version: 15.0
+Release: 1
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
+Source1: https://freedesktop.org/software/pulseaudio/releases/pulseaudio-%{version}.tar.xz.sha256sum
Source5: default.pa-for-gdm
Patch201: pulseaudio-autostart.patch
-Patch202: pulseaudio-9.0-disable_flat_volumes.patch
+BuildRequires: meson
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
@@ -24,10 +24,9 @@ BuildRequires: xorg-x11-proto-devel libXtst-devel libXi-devel libSM-devel libX1
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
+BuildRequires: pkgconfig(gstreamer-1.0) pkgconfig(gstreamer-app-1.0) pkgconfig(gstreamer-rtp-1.0)
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
@@ -49,7 +48,6 @@ Summary: Headers and libraries for PulseAudio client development
License: LGPLv2+
Requires: %{name} = %{version}-%{release}
Provides: %{name}-libs-devel %{name}-libs-devel%{?_isa}
-Obsoletes: %{name}-libs-devel
%description devel
Headers and libraries for developing applications that can communicate with
@@ -64,33 +62,34 @@ 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
+%meson \
+ -D system_user=pulse \
+ -D system_group=pulse \
+ -D access_group=pulse-access \
+ -D oss-output=disabled \
+ -D jack=%{?enable_jack:enabled}%{!?enable_jack:disabled} \
+ -D lirc=%{?enable_lirc:enabled}%{!?enable_lirc:disabled} \
+ -D tcpwrap=disabled \
+ -D bluez5=enabled \
+ -D gstreamer=enabled \
+ -D bluez5-gstreamer=enabled \
+ -D gsettings=enabled \
+ -D elogind=disabled \
+ -D valgrind=disabled \
+ -D gtk=disabled \
+ -D soxr=%{?fedora:enabled}%{!?fedora:disabled} \
+ -D webrtc-aec=%{?with_webrtc:enabled}%{!?with_webrtc:disabled} \
+ -D systemd=%{?systemd:enabled}%{!?systemd:disabled} \
+ -D tests=%{?tests:true}%{!?tests:false}
+
+%meson_build
+
+%meson_build 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
+%meson_install
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
@@ -98,7 +97,7 @@ mv -fv $RPM_BUILD_ROOT/lib/udev/rules.d/90-pulseaudio.rules $RPM_BUILD_ROOT%{_pr
%delete_la
%check
-%make_build check || TESTS_ERROR=$?
+%meson_test check || TESTS_ERROR=$?
if [ "${TESTS_ERROR}" != "" ]; then
cat src/test-suite.log
exit $TESTS_ERROR
@@ -134,8 +133,6 @@ exit 0
%{_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
@@ -146,12 +143,8 @@ exit 0
%{_bindir}/pamon
%{_bindir}/parecord
%{_bindir}/pax11publish
-%{_bindir}/padsp
%{_bindir}/pasuspender
%{_bindir}/pa-info
-%ifarch %{multilib_archs}
-%{_bindir}/padsp-32
-%endif
%{_libdir}/*.so.*
%{_libdir}/pulseaudio/*.so
%{_libdir}/pulse-%{version}/modules/*.so
@@ -164,6 +157,7 @@ exit 0
%{_datadir}/pulseaudio/alsa-mixer/*/
%{_datadir}/zsh/site-functions/_pulseaudio
%{_datadir}/GConf/gsettings/pulseaudio.convert
+%config(noreplace) %{_sysconfdir}/xdg/Xwayland-session.d/00-pulseaudio-x11
%files qpaeq
%defattr(-,root,root)
@@ -180,11 +174,13 @@ exit 0
%files help
%defattr(-,root,root)
-%doc README doxygen/html
%{_mandir}/man*/*
%{_datadir}/glib-2.0/schemas/org.freedesktop.pulseaudio.gschema.xml
%changelog
+* Sat Dec 4 2021 zhouwenpei - 15.0-1
+- update to version 15.0
+
* Fri Oct 30 2020 xinghe - 13.0-4
- remove python2 dependency