packages/sound/mpd/patches/030-volume_mapping-get-rid-of-exp10-workaround.patch
Rosen Penev 3be4778840
mpd: update to 0.21.20
Updated patches to latest patchset and removed upstreamed ones.

Ran init script through shellcheck. Restart using SIGHUP.

Added logging from stderr as any kind of logging is missing in --no-daemon
mode.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-02-17 21:16:26 -08:00

52 lines
1.7 KiB
Diff

From 6b3250a3fb4a854d19980868ed187ca21f0e5ed8 Mon Sep 17 00:00:00 2001
From: Rosen Penev <rosenp@gmail.com>
Date: Mon, 3 Feb 2020 15:26:50 -0800
Subject: [PATCH] volume_mapping: get rid of exp10 workaround
exp10 is a GNU function, is not part of C++, and is not available
everywhere.
pow(10,x) is an alternative that works just as well.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
src/mixer/plugins/volume_mapping.c | 11 +++--------
1 file changed, 3 insertions(+), 8 deletions(-)
diff --git a/src/mixer/plugins/volume_mapping.c b/src/mixer/plugins/volume_mapping.c
index 61a7138af..beecce640 100644
--- a/src/mixer/plugins/volume_mapping.c
+++ b/src/mixer/plugins/volume_mapping.c
@@ -34,11 +34,6 @@
#include <stdbool.h>
#include "volume_mapping.h"
-#ifdef __UCLIBC__
-/* 10^x = 10^(log e^x) = (e^x)^log10 = e^(x * log 10) */
-#define exp10(x) (exp((x) * log(10)))
-#endif /* __UCLIBC__ */
-
#define MAX_LINEAR_DB_SCALE 24
static inline bool use_linear_dB_scale(long dBmin, long dBmax)
@@ -111,9 +106,9 @@ static double get_normalized_volume(snd_mixer_elem_t *elem,
if (use_linear_dB_scale(min, max))
return (value - min) / (double)(max - min);
- normalized = exp10((value - max) / 6000.0);
+ normalized = pow(10, (value - max) / 6000.0);
if (min != SND_CTL_TLV_DB_GAIN_MUTE) {
- min_norm = exp10((min - max) / 6000.0);
+ min_norm = pow(10, (min - max) / 6000.0);
normalized = (normalized - min_norm) / (1 - min_norm);
}
@@ -159,7 +154,7 @@ static int set_normalized_volume(snd_mixer_elem_t *elem,
}
if (min != SND_CTL_TLV_DB_GAIN_MUTE) {
- min_norm = exp10((min - max) / 6000.0);
+ min_norm = pow(10, (min - max) / 6000.0);
volume = volume * (1 - min_norm) + min_norm;
}
value = lrint_dir(6000.0 * log10(volume), dir) + max;