pulseaudio rebuild
This commit is contained in:
@@ -33,6 +33,11 @@ j = ''.join([
|
||||
])
|
||||
|
||||
def setup():
|
||||
shelltools.cd("%s" % get.workDIR())
|
||||
shelltools.move("pulseaudio-*", "pulseaudio-%s" % get.srcVERSION())
|
||||
shelltools.cd("pulseaudio-%s" % get.srcVERSION())
|
||||
shelltools.echo(".tarball-version", get.srcVERSION())
|
||||
|
||||
options = "%s" % i
|
||||
|
||||
if get.buildTYPE() == "emul32":
|
||||
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Alper Nebi Yasak <alpernebiyasak@gmail.com>
|
||||
Date: Wed, 4 Dec 2024 17:34:45 +0300
|
||||
Subject: [PATCH] alsa-ucm: Fix segfault from recursion due to too many devices
|
||||
|
||||
While trying to figure out device subsets that have aren't internally
|
||||
contain conflicting devices, we walk through all possible subsets and
|
||||
check each set if it satisfies ConflictingDevices/SupportedDevices
|
||||
listed in UCM configuration. For a better user experience, we want to
|
||||
skip subsets that are fully included in another valid subset we will
|
||||
also generate.
|
||||
|
||||
The iterate_device_subsets() function that achieves the former is
|
||||
intentionally in iterative form to avoid a stack overflow, since it will
|
||||
walk through 2^n sets. However, the iterate_maximal_device_subsets()
|
||||
function that skips incomplete sets is in recursive form, as I had
|
||||
assumed tail-call optimization would take care of the potential problem.
|
||||
|
||||
Convert iterate_maximal_device_subsets() to an iterative form, because
|
||||
the recursion seems to trigger a segfault with more than 16 devices.
|
||||
|
||||
Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
|
||||
---
|
||||
src/modules/alsa/alsa-ucm.c | 22 ++++++++++------------
|
||||
1 file changed, 10 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/src/modules/alsa/alsa-ucm.c b/src/modules/alsa/alsa-ucm.c
|
||||
index 018c01739ba0..34a9d30ade48 100644
|
||||
--- a/src/modules/alsa/alsa-ucm.c
|
||||
+++ b/src/modules/alsa/alsa-ucm.c
|
||||
@@ -1404,22 +1404,20 @@ static pa_idxset *iterate_device_subsets(pa_idxset *devices, void **state) {
|
||||
static pa_idxset *iterate_maximal_device_subsets(pa_idxset *devices, void **state) {
|
||||
uint32_t idx;
|
||||
pa_alsa_ucm_device *dev;
|
||||
- pa_idxset *subset;
|
||||
+ pa_idxset *subset = NULL;
|
||||
|
||||
pa_assert(devices);
|
||||
pa_assert(state);
|
||||
|
||||
- subset = iterate_device_subsets(devices, state);
|
||||
- if (!subset)
|
||||
- return subset;
|
||||
-
|
||||
- /* Skip this group if it's incomplete, by checking if we can add any
|
||||
- * other device. If we can, this iteration is a subset of another
|
||||
- * group that we already returned or eventually return. */
|
||||
- PA_IDXSET_FOREACH(dev, devices, idx) {
|
||||
- if (!pa_idxset_contains(subset, dev) && devset_supports_device(subset, dev)) {
|
||||
- pa_idxset_free(subset, NULL);
|
||||
- return iterate_maximal_device_subsets(devices, state);
|
||||
+ while (subset == NULL && (subset = iterate_device_subsets(devices, state))) {
|
||||
+ /* Skip this group if it's incomplete, by checking if we can add any
|
||||
+ * other device. If we can, this iteration is a subset of another
|
||||
+ * group that we already returned or eventually return. */
|
||||
+ PA_IDXSET_FOREACH(dev, devices, idx) {
|
||||
+ if (subset && !pa_idxset_contains(subset, dev) && devset_supports_device(subset, dev)) {
|
||||
+ pa_idxset_free(subset, NULL);
|
||||
+ subset = NULL;
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<IsA>library</IsA>
|
||||
<Summary>A networked sound server with an advanced plugin system</Summary>
|
||||
<Description>pulseaudio is a sound server for POSIX and Win32 systems. It allows you to do advanced operations on your sound data as it passes between your application and your hardware.</Description>
|
||||
<Archive sha1sum="1b19adc2d546d5775bb05c1a8cd52f68a9c9def1" type="tarxz">https://www.freedesktop.org/software/pulseaudio/releases/pulseaudio-17.0.tar.xz</Archive>
|
||||
<Archive sha1sum="66707569d528f2712c5d420d4a27d3e574c67fa1" type="tarbz2">https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/archive/3e2bb8a1ece02ae4e2c217273c9c0929cb9f5cae/pulseaudio-3e2bb8a1ece02ae4e2c217273c9c0929cb9f5cae.tar.bz2</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency>meson</Dependency>
|
||||
<Dependency>bluez</Dependency>
|
||||
@@ -53,7 +53,7 @@
|
||||
<Dependency>jack-audio-connection-kit-devel</Dependency>
|
||||
</BuildDependencies>
|
||||
<Patches>
|
||||
<Patch level="1">gentoo/pulseaudio-17.0-backport-pr807.patch</Patch>
|
||||
<Patch level="1">0001-alsa-ucm-Fix-segfault-from-recursion-due-to-too-many.patch</Patch>
|
||||
</Patches>
|
||||
</Source>
|
||||
|
||||
@@ -226,6 +226,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="21">
|
||||
<Date>2024-12-10</Date>
|
||||
<Version>17.0</Version>
|
||||
<Comment>Rebuild.</Comment>
|
||||
<Name>Pisi Linux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="20">
|
||||
<Date>2024-08-10</Date>
|
||||
<Version>17.0</Version>
|
||||
|
||||
Reference in New Issue
Block a user