summaryrefslogtreecommitdiff
path: root/media-video/pipewire/files/0.3.79/0002-alsa-non-portable-isinf-use.patch
diff options
context:
space:
mode:
Diffstat (limited to 'media-video/pipewire/files/0.3.79/0002-alsa-non-portable-isinf-use.patch')
-rw-r--r--media-video/pipewire/files/0.3.79/0002-alsa-non-portable-isinf-use.patch30
1 files changed, 30 insertions, 0 deletions
diff --git a/media-video/pipewire/files/0.3.79/0002-alsa-non-portable-isinf-use.patch b/media-video/pipewire/files/0.3.79/0002-alsa-non-portable-isinf-use.patch
new file mode 100644
index 000000000000..767c399bd515
--- /dev/null
+++ b/media-video/pipewire/files/0.3.79/0002-alsa-non-portable-isinf-use.patch
@@ -0,0 +1,30 @@
+https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/aa11dbe10c0f2319a5c4c8dcfff1d5dccc03589e
+
+From aa11dbe10c0f2319a5c4c8dcfff1d5dccc03589e Mon Sep 17 00:00:00 2001
+From: q66 <q66@chimera-linux.org>
+Date: Thu, 31 Aug 2023 03:17:54 +0200
+Subject: [PATCH] alsa: get rid of non-portable isinf use
+
+The isinf function returns -1 for negative infinity on glibc, but
+the standard guarantees no such behavior (e.g. in C++ it always
+returns a bool, on musl libc it's a macro that expands to a bool
+expression), saying just that it returns a non-zero value.
+
+This was added in pulseaudio around 15 years ago, and was never
+fixed; pipewire then got the code from it. However, we can portably
+check against -INFINITY instead (from math.h, already included).
+
+Ref https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/commit/045c1d6
+--- a/spa/plugins/alsa/acp/volume.h
++++ b/spa/plugins/alsa/acp/volume.h
+@@ -83,7 +83,7 @@ static inline pa_volume_t pa_sw_volume_from_linear(double v)
+
+ static inline pa_volume_t pa_sw_volume_from_dB(double dB)
+ {
+- if (isinf(dB) < 0 || dB <= PA_DECIBEL_MININFTY)
++ if (dB == -INFINITY || dB <= PA_DECIBEL_MININFTY)
+ return PA_VOLUME_MUTED;
+ return pa_sw_volume_from_linear(pa_volume_dB_to_linear(dB));
+ }
+--
+GitLab