forked from pool/alsa-utils
Accepting request 899942 from home:tiwai:branches:multimedia:libs
- Update to alsa-utils 1.2.5: a major version up, including previous patches https://www.alsa-project.org/wiki/Changes_v1.2.4_v1.2.5 - Update to alsa-utils 1.2.5.1: a small bugfix release https://www.alsa-project.org/wiki/Changes_v1.2.5_v1.2.5.1 - Drop the obsoleted patches: 0001-aplay-try-to-use-16-bit-format-to-increase-capture-q.patch 0002-alsamixer-Fix-the-mixer-views-description-in-man-pag.patch 0003-Add-Slovak-translation.patch 0004-Add-Basque-translation.patch 0006-aplay-cosmetic-code-fix-in-xrun.patch 0007-aplay-fix-the-CPU-busy-loop-in-the-pause-handler.patch 0008-alsa-info-Add-lsusb-and-stream-outputs.patch 0010-alsactl-Fix-double-decrease-of-lock-timeout.patch 0011-alsactl-Fix-race-at-creating-a-lock-file.patch 0012-alsactl-Remove-asound.state-file-check-from-alsa-res.patch 0013-aplay-add-test-code-for-snd_pcm_status-to-test-posit.patch 0014-ucm-fix-typo-in-docs.patch 0015-aplay-add-avail-delay-checks-to-test-position.patch 0016-alsactl-daemon-read_pid_file-fix-the-returned-code-o.patch 0017-alsactl-init-set_ctl_value-fix-bytes-parsing.patch 0018-alsactl-init-parse-fix-possible-double-free.patch 0019-alsaloop-fix-possible-memory-leak-in-create_loopback.patch 0020-alsaloop-get_queued_playback_samples-simplify-code.patch 0021-topology-fix-possible-double-free-in-load.patch 0022-alsamixer-remove-dead-fcn-widget_handle_key-in-widge.patch 0023-alsamixer-remove-unused-variable-y-in-display_scroll.patch 0024-alsamixer-fix-shift-in-parse_words.patch 0025-aplay-fix-the-test-position-test-for-playback-avail-.patch OBS-URL: https://build.opensuse.org/request/show/899942 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/alsa-utils?expand=0&rev=194
This commit is contained in:
parent
4267bf074f
commit
714a3234d5
@ -1,187 +0,0 @@
|
|||||||
From 0c5948e98a6a8535c89b7bcab13017d7732181c6 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Hui Wang <hui.wang@canonical.com>
|
|
||||||
Date: Fri, 23 Oct 2020 16:47:10 +0800
|
|
||||||
Subject: [PATCH 01/25] aplay: try to use 16-bit format to increase capture
|
|
||||||
quality
|
|
||||||
|
|
||||||
Recently users reported a bug, I tested it and found it is a common
|
|
||||||
issue on Laptop or Desktop machines.
|
|
||||||
|
|
||||||
The issue is users plug a headset and use "arecord test.wav" to
|
|
||||||
record a sound with default input volume, the recorded sound has
|
|
||||||
poor quality and nearly can't distinguish it is the sound we want
|
|
||||||
to record.
|
|
||||||
|
|
||||||
This is because the input volume is low and the default format is U8.
|
|
||||||
The driver records sound with 16bit, because the input volume is low,
|
|
||||||
most of samples are within (-256,+256), when converting 16bit to U8,
|
|
||||||
those samples will be 0x7f. This is called quantization noise and we
|
|
||||||
could only workaround it by increase the input volume or adding -f to
|
|
||||||
arecord.
|
|
||||||
|
|
||||||
But users want to record a better quality sound with default input
|
|
||||||
volume (after installing a new OS, the volume is the default volume),
|
|
||||||
and they don't want to add parameters to the arecord because most of
|
|
||||||
new linux users just use "arecord test.wav".
|
|
||||||
|
|
||||||
So this patch tries to change the default format from U8 to S16_LE/BE.
|
|
||||||
If the machine doesn't support S16_LE/BE, it still uses U8 as default
|
|
||||||
format.
|
|
||||||
|
|
||||||
Signed-off-by: Hui Wang <hui.wang@canonical.com>
|
|
||||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
---
|
|
||||||
aplay/aplay.c | 43 ++++++++++++++++++++++++++++++++++---------
|
|
||||||
1 file changed, 34 insertions(+), 9 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/aplay/aplay.c b/aplay/aplay.c
|
|
||||||
index 0a65ad69fd14..a27220d8fd03 100644
|
|
||||||
--- a/aplay/aplay.c
|
|
||||||
+++ b/aplay/aplay.c
|
|
||||||
@@ -32,6 +32,7 @@
|
|
||||||
#include <malloc.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
+#include <stdbool.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <getopt.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
@@ -94,6 +95,7 @@ enum {
|
|
||||||
VUMETER_STEREO
|
|
||||||
};
|
|
||||||
|
|
||||||
+static snd_pcm_format_t default_format = DEFAULT_FORMAT;
|
|
||||||
static char *command;
|
|
||||||
static snd_pcm_t *handle;
|
|
||||||
static struct {
|
|
||||||
@@ -468,6 +470,24 @@ static long parse_long(const char *str, int *err)
|
|
||||||
return val;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static void try_to_adjust_default_format_16bit(void)
|
|
||||||
+{
|
|
||||||
+ snd_pcm_hw_params_t *params;
|
|
||||||
+ int err;
|
|
||||||
+
|
|
||||||
+ snd_pcm_hw_params_alloca(¶ms);
|
|
||||||
+ err = snd_pcm_hw_params_any(handle, params);
|
|
||||||
+ if (err < 0) {
|
|
||||||
+ error(_("Broken configuration for this PCM: no configurations available"));
|
|
||||||
+ prg_exit(EXIT_FAILURE);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (file_type != FORMAT_AU && snd_pcm_hw_params_test_format(handle, params, SND_PCM_FORMAT_S16_LE) == 0)
|
|
||||||
+ rhwparams.format = default_format = SND_PCM_FORMAT_S16_LE;
|
|
||||||
+ else if (file_type == FORMAT_AU && snd_pcm_hw_params_test_format(handle, params, SND_PCM_FORMAT_S16_BE) == 0)
|
|
||||||
+ rhwparams.format = default_format = SND_PCM_FORMAT_S16_BE;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
int main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
int duration_or_sample = 0;
|
|
||||||
@@ -528,6 +548,7 @@ int main(int argc, char *argv[])
|
|
||||||
int do_device_list = 0, do_pcm_list = 0;
|
|
||||||
snd_pcm_info_t *info;
|
|
||||||
FILE *direction;
|
|
||||||
+ bool user_set_fmt = false;
|
|
||||||
|
|
||||||
#ifdef ENABLE_NLS
|
|
||||||
setlocale(LC_ALL, "");
|
|
||||||
@@ -562,7 +583,7 @@ int main(int argc, char *argv[])
|
|
||||||
}
|
|
||||||
|
|
||||||
chunk_size = -1;
|
|
||||||
- rhwparams.format = DEFAULT_FORMAT;
|
|
||||||
+ rhwparams.format = default_format;
|
|
||||||
rhwparams.rate = DEFAULT_SPEED;
|
|
||||||
rhwparams.channels = 1;
|
|
||||||
|
|
||||||
@@ -612,6 +633,7 @@ int main(int argc, char *argv[])
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 'f':
|
|
||||||
+ user_set_fmt = true;
|
|
||||||
if (strcasecmp(optarg, "cd") == 0 || strcasecmp(optarg, "cdr") == 0) {
|
|
||||||
if (strcasecmp(optarg, "cdr") == 0)
|
|
||||||
rhwparams.format = SND_PCM_FORMAT_S16_BE;
|
|
||||||
@@ -844,6 +866,9 @@ int main(int argc, char *argv[])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (!user_set_fmt)
|
|
||||||
+ try_to_adjust_default_format_16bit();
|
|
||||||
+
|
|
||||||
chunk_size = 1024;
|
|
||||||
hwparams = rhwparams;
|
|
||||||
|
|
||||||
@@ -1064,7 +1089,7 @@ static ssize_t test_wavefile(int fd, u_char *_buffer, size_t size)
|
|
||||||
hwparams.channels = channels;
|
|
||||||
switch (TO_CPU_SHORT(f->bit_p_spl, big_endian)) {
|
|
||||||
case 8:
|
|
||||||
- if (hwparams.format != DEFAULT_FORMAT &&
|
|
||||||
+ if (hwparams.format != default_format &&
|
|
||||||
hwparams.format != SND_PCM_FORMAT_U8)
|
|
||||||
fprintf(stderr, _("Warning: format is changed to U8\n"));
|
|
||||||
hwparams.format = SND_PCM_FORMAT_U8;
|
|
||||||
@@ -1074,7 +1099,7 @@ static ssize_t test_wavefile(int fd, u_char *_buffer, size_t size)
|
|
||||||
native_format = SND_PCM_FORMAT_S16_BE;
|
|
||||||
else
|
|
||||||
native_format = SND_PCM_FORMAT_S16_LE;
|
|
||||||
- if (hwparams.format != DEFAULT_FORMAT &&
|
|
||||||
+ if (hwparams.format != default_format &&
|
|
||||||
hwparams.format != native_format)
|
|
||||||
fprintf(stderr, _("Warning: format is changed to %s\n"),
|
|
||||||
snd_pcm_format_name(native_format));
|
|
||||||
@@ -1087,7 +1112,7 @@ static ssize_t test_wavefile(int fd, u_char *_buffer, size_t size)
|
|
||||||
native_format = SND_PCM_FORMAT_S24_3BE;
|
|
||||||
else
|
|
||||||
native_format = SND_PCM_FORMAT_S24_3LE;
|
|
||||||
- if (hwparams.format != DEFAULT_FORMAT &&
|
|
||||||
+ if (hwparams.format != default_format &&
|
|
||||||
hwparams.format != native_format)
|
|
||||||
fprintf(stderr, _("Warning: format is changed to %s\n"),
|
|
||||||
snd_pcm_format_name(native_format));
|
|
||||||
@@ -1098,7 +1123,7 @@ static ssize_t test_wavefile(int fd, u_char *_buffer, size_t size)
|
|
||||||
native_format = SND_PCM_FORMAT_S24_BE;
|
|
||||||
else
|
|
||||||
native_format = SND_PCM_FORMAT_S24_LE;
|
|
||||||
- if (hwparams.format != DEFAULT_FORMAT &&
|
|
||||||
+ if (hwparams.format != default_format &&
|
|
||||||
hwparams.format != native_format)
|
|
||||||
fprintf(stderr, _("Warning: format is changed to %s\n"),
|
|
||||||
snd_pcm_format_name(native_format));
|
|
||||||
@@ -1184,19 +1209,19 @@ static int test_au(int fd, void *buffer)
|
|
||||||
pbrec_count = BE_INT(ap->data_size);
|
|
||||||
switch (BE_INT(ap->encoding)) {
|
|
||||||
case AU_FMT_ULAW:
|
|
||||||
- if (hwparams.format != DEFAULT_FORMAT &&
|
|
||||||
+ if (hwparams.format != default_format &&
|
|
||||||
hwparams.format != SND_PCM_FORMAT_MU_LAW)
|
|
||||||
fprintf(stderr, _("Warning: format is changed to MU_LAW\n"));
|
|
||||||
hwparams.format = SND_PCM_FORMAT_MU_LAW;
|
|
||||||
break;
|
|
||||||
case AU_FMT_LIN8:
|
|
||||||
- if (hwparams.format != DEFAULT_FORMAT &&
|
|
||||||
+ if (hwparams.format != default_format &&
|
|
||||||
hwparams.format != SND_PCM_FORMAT_U8)
|
|
||||||
fprintf(stderr, _("Warning: format is changed to U8\n"));
|
|
||||||
hwparams.format = SND_PCM_FORMAT_U8;
|
|
||||||
break;
|
|
||||||
case AU_FMT_LIN16:
|
|
||||||
- if (hwparams.format != DEFAULT_FORMAT &&
|
|
||||||
+ if (hwparams.format != default_format &&
|
|
||||||
hwparams.format != SND_PCM_FORMAT_S16_BE)
|
|
||||||
fprintf(stderr, _("Warning: format is changed to S16_BE\n"));
|
|
||||||
hwparams.format = SND_PCM_FORMAT_S16_BE;
|
|
||||||
@@ -2315,7 +2340,7 @@ static void voc_play(int fd, int ofs, char *name)
|
|
||||||
prg_exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
- hwparams.format = DEFAULT_FORMAT;
|
|
||||||
+ hwparams.format = default_format;
|
|
||||||
hwparams.channels = 1;
|
|
||||||
hwparams.rate = DEFAULT_SPEED;
|
|
||||||
set_params();
|
|
||||||
--
|
|
||||||
2.26.2
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
|||||||
From 737b64e1940b29c575be3942cd9f87aa390d93b2 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?=E7=A9=8D=E4=B8=B9=E5=B0=BC=20Dan=20Jacobson?=
|
|
||||||
<jidanni@jidanni.org>
|
|
||||||
Date: Sun, 18 Oct 2020 18:33:54 +0800
|
|
||||||
Subject: [PATCH 02/25] alsamixer: Fix the mixer views description in man page
|
|
||||||
|
|
||||||
Fix grammar mess.
|
|
||||||
|
|
||||||
From: Dan Jacobson <jidanni@jidanni.org>
|
|
||||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
---
|
|
||||||
alsamixer/alsamixer.1 | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/alsamixer/alsamixer.1 b/alsamixer/alsamixer.1
|
|
||||||
index 8d34680a585e..2d711cf15264 100644
|
|
||||||
--- a/alsamixer/alsamixer.1
|
|
||||||
+++ b/alsamixer/alsamixer.1
|
|
||||||
@@ -34,7 +34,7 @@ Toggle the using of colors.
|
|
||||||
|
|
||||||
.SH MIXER VIEWS
|
|
||||||
|
|
||||||
-The top-left corner of \fBalsamixer\fP is the are to show some basic
|
|
||||||
+The top-left corner of \fBalsamixer\fP shows some basic
|
|
||||||
information: the card name, the mixer chip name, the current view
|
|
||||||
mode and the currently selected mixer item.
|
|
||||||
When the mixer item is switched off, \fI[Off]\fP is displayed in its
|
|
||||||
--
|
|
||||||
2.26.2
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,27 +0,0 @@
|
|||||||
From 986a1bd3d2eebd41a2925969826fca870b2cd330 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
Date: Fri, 23 Oct 2020 12:05:56 +0200
|
|
||||||
Subject: [PATCH 06/25] aplay: cosmetic code fix in xrun()
|
|
||||||
|
|
||||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
---
|
|
||||||
aplay/aplay.c | 3 ++-
|
|
||||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/aplay/aplay.c b/aplay/aplay.c
|
|
||||||
index a27220d8fd03..ae609880bfd7 100644
|
|
||||||
--- a/aplay/aplay.c
|
|
||||||
+++ b/aplay/aplay.c
|
|
||||||
@@ -1676,7 +1676,8 @@ static void xrun(void)
|
|
||||||
prg_exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
return; /* ok, data should be accepted again */
|
|
||||||
- } if (snd_pcm_status_get_state(status) == SND_PCM_STATE_DRAINING) {
|
|
||||||
+ }
|
|
||||||
+ if (snd_pcm_status_get_state(status) == SND_PCM_STATE_DRAINING) {
|
|
||||||
if (verbose) {
|
|
||||||
fprintf(stderr, _("Status(DRAINING):\n"));
|
|
||||||
snd_pcm_status_dump(status, log);
|
|
||||||
--
|
|
||||||
2.26.2
|
|
||||||
|
|
@ -1,59 +0,0 @@
|
|||||||
From c1b92db5ef01311e5fc983f3134caa00826d0c2d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
Date: Sun, 8 Nov 2020 19:11:12 +0100
|
|
||||||
Subject: [PATCH 07/25] aplay: fix the CPU busy loop in the pause handler
|
|
||||||
|
|
||||||
Use the standard poll mechanism to ensure that there's
|
|
||||||
something in the input to avoid busy loop on the file
|
|
||||||
descriptor with the non-block mode set.
|
|
||||||
|
|
||||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
---
|
|
||||||
aplay/aplay.c | 17 +++++++++++++++--
|
|
||||||
1 file changed, 15 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/aplay/aplay.c b/aplay/aplay.c
|
|
||||||
index ae609880bfd7..d385da25fea1 100644
|
|
||||||
--- a/aplay/aplay.c
|
|
||||||
+++ b/aplay/aplay.c
|
|
||||||
@@ -1553,6 +1553,19 @@ static void done_stdin(void)
|
|
||||||
tcsetattr(fileno(stdin), TCSANOW, &term);
|
|
||||||
}
|
|
||||||
|
|
||||||
+static char wait_for_input(void)
|
|
||||||
+{
|
|
||||||
+ struct pollfd pfd;
|
|
||||||
+ unsigned char b;
|
|
||||||
+
|
|
||||||
+ do {
|
|
||||||
+ pfd.fd = fileno(stdin);
|
|
||||||
+ pfd.events = POLLIN;
|
|
||||||
+ poll(&pfd, 1, -1);
|
|
||||||
+ } while (read(fileno(stdin), &b, 1) != 1);
|
|
||||||
+ return b;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static void do_pause(void)
|
|
||||||
{
|
|
||||||
int err;
|
|
||||||
@@ -1571,7 +1584,7 @@ static void do_pause(void)
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
while (1) {
|
|
||||||
- while (read(fileno(stdin), &b, 1) != 1);
|
|
||||||
+ b = wait_for_input();
|
|
||||||
if (b == ' ' || b == '\r') {
|
|
||||||
while (read(fileno(stdin), &b, 1) == 1);
|
|
||||||
if (snd_pcm_state(handle) == SND_PCM_STATE_SUSPENDED)
|
|
||||||
@@ -1596,7 +1609,7 @@ static void check_stdin(void)
|
|
||||||
while (read(fileno(stdin), &b, 1) == 1);
|
|
||||||
fprintf(stderr, _("\r=== PAUSE === "));
|
|
||||||
fflush(stderr);
|
|
||||||
- do_pause();
|
|
||||||
+ do_pause();
|
|
||||||
fprintf(stderr, " \r");
|
|
||||||
fflush(stderr);
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.26.2
|
|
||||||
|
|
@ -1,68 +0,0 @@
|
|||||||
From 5812f37d877c12bc594b9ffddc493d305991963a Mon Sep 17 00:00:00 2001
|
|
||||||
From: Takashi Iwai <tiwai@suse.de>
|
|
||||||
Date: Wed, 9 Dec 2020 18:35:49 +0100
|
|
||||||
Subject: [PATCH 08/25] alsa-info: Add lsusb and stream outputs
|
|
||||||
|
|
||||||
We need more detailed information for USB-audio devices, at least the
|
|
||||||
lsusb -v output and the contents of stream* proc files.
|
|
||||||
Let's add them to alsa-info.sh output.
|
|
||||||
|
|
||||||
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
|
||||||
---
|
|
||||||
alsa-info/alsa-info.sh | 33 +++++++++++++++++++++++++++++++++
|
|
||||||
1 file changed, 33 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/alsa-info/alsa-info.sh b/alsa-info/alsa-info.sh
|
|
||||||
index f179bfab8655..3871b97a2268 100755
|
|
||||||
--- a/alsa-info/alsa-info.sh
|
|
||||||
+++ b/alsa-info/alsa-info.sh
|
|
||||||
@@ -476,6 +476,18 @@ cat /proc/asound/card*/codec\#* > $TEMPDIR/alsa-hda-intel.tmp 2> /dev/null
|
|
||||||
cat /proc/asound/card*/codec97\#0/ac97\#0-0 > $TEMPDIR/alsa-ac97.tmp 2> /dev/null
|
|
||||||
cat /proc/asound/card*/codec97\#0/ac97\#0-0+regs > $TEMPDIR/alsa-ac97-regs.tmp 2> /dev/null
|
|
||||||
|
|
||||||
+#Check for USB descriptors
|
|
||||||
+if [ -x /usr/bin/lsusb ]; then
|
|
||||||
+ for f in /proc/asound/card[0-9]*/usbbus; do
|
|
||||||
+ test -f "$f" || continue
|
|
||||||
+ id=$(sed 's@/@:@' $f)
|
|
||||||
+ lsusb -v -s $id >> $TEMPDIR/lsusb.tmp 2> /dev/null
|
|
||||||
+ done
|
|
||||||
+fi
|
|
||||||
+
|
|
||||||
+#Check for USB stream setup
|
|
||||||
+cat /proc/asound/card*/stream[0-9]* > $TEMPDIR/alsa-usbstream.tmp 2> /dev/null
|
|
||||||
+
|
|
||||||
#Check for USB mixer setup
|
|
||||||
cat /proc/asound/card*/usbmixer > $TEMPDIR/alsa-usbmixer.tmp 2> /dev/null
|
|
||||||
|
|
||||||
@@ -649,6 +661,27 @@ if [ -s "$TEMPDIR/alsa-ac97.tmp" ]; then
|
|
||||||
echo "" >> $FILE
|
|
||||||
fi
|
|
||||||
|
|
||||||
+if [ -s "$TEMPDIR/lsusb.tmp" ]; then
|
|
||||||
+ echo "!!USB Descriptors" >> $FILE
|
|
||||||
+ echo "!!---------------" >> $FILE
|
|
||||||
+ echo "--startcollapse--" >> $FILE
|
|
||||||
+ cat $TEMPDIR/lsusb.tmp >> $FILE
|
|
||||||
+ echo "--endcollapse--" >> $FILE
|
|
||||||
+ echo "" >> $FILE
|
|
||||||
+ echo "" >> $FILE
|
|
||||||
+fi
|
|
||||||
+
|
|
||||||
+if [ -s "$TEMPDIR/lsusb.tmp" ]; then
|
|
||||||
+ echo "!!USB Stream information" >> $FILE
|
|
||||||
+ echo "!!----------------------" >> $FILE
|
|
||||||
+ echo "--startcollapse--" >> $FILE
|
|
||||||
+ echo "" >> $FILE
|
|
||||||
+ cat $TEMPDIR/alsa-usbstream.tmp >> $FILE
|
|
||||||
+ echo "--endcollapse--" >> $FILE
|
|
||||||
+ echo "" >> $FILE
|
|
||||||
+ echo "" >> $FILE
|
|
||||||
+fi
|
|
||||||
+
|
|
||||||
if [ -s "$TEMPDIR/alsa-usbmixer.tmp" ]; then
|
|
||||||
echo "!!USB Mixer information" >> $FILE
|
|
||||||
echo "!!---------------------" >> $FILE
|
|
||||||
--
|
|
||||||
2.26.2
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
|||||||
From 878e1a7c0f03233530e7675ae015aced069c971d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Takashi Iwai <tiwai@suse.de>
|
|
||||||
Date: Fri, 11 Dec 2020 23:41:59 +0100
|
|
||||||
Subject: [PATCH] alsactl: Fix double decrease of lock timeout
|
|
||||||
|
|
||||||
The state_lock() has a loop to wait for the lock file creation, and
|
|
||||||
the timeout value gets decremented twice mistakenly, which leads to a
|
|
||||||
half timeout (5 seconds) than expected 10 seconds. Fix it.
|
|
||||||
|
|
||||||
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
|
||||||
---
|
|
||||||
alsactl/lock.c | 1 -
|
|
||||||
1 file changed, 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/alsactl/lock.c b/alsactl/lock.c
|
|
||||||
index 4a485392b3bd..05f6e4d2a102 100644
|
|
||||||
--- a/alsactl/lock.c
|
|
||||||
+++ b/alsactl/lock.c
|
|
||||||
@@ -63,7 +63,6 @@ static int state_lock_(const char *file, int lock, int timeout, int _fd)
|
|
||||||
if (fd < 0) {
|
|
||||||
if (errno == EBUSY || errno == EAGAIN) {
|
|
||||||
sleep(1);
|
|
||||||
- timeout--;
|
|
||||||
} else {
|
|
||||||
err = -errno;
|
|
||||||
goto out;
|
|
||||||
--
|
|
||||||
2.26.2
|
|
||||||
|
|
@ -1,47 +0,0 @@
|
|||||||
From c53f7cd03881092d5a61505d23ab8f920b7faf12 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Takashi Iwai <tiwai@suse.de>
|
|
||||||
Date: Fri, 11 Dec 2020 23:46:23 +0100
|
|
||||||
Subject: [PATCH] alsactl: Fix race at creating a lock file
|
|
||||||
|
|
||||||
A race at creating a lock file in state_lock() was discovered
|
|
||||||
recently: namely, between the first open(O_RDWR) and the second
|
|
||||||
open(O_RDWR|O_CREAT|O_EXCL) calls, another alsactl invocation may
|
|
||||||
already create a lock file, then the second open() will return EEXIST,
|
|
||||||
which isn't handled properly and treated as a fatal error.
|
|
||||||
|
|
||||||
In this patch, we check EEXIST case and try again open() with O_RDWR.
|
|
||||||
This must succeed usually, and if it fails, handle finally as the
|
|
||||||
fatal error.
|
|
||||||
|
|
||||||
BugLink: https://bugzilla.opensuse.org/show_bug.cgi?id=1179904
|
|
||||||
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
|
||||||
---
|
|
||||||
alsactl/lock.c | 11 ++++++++---
|
|
||||||
1 file changed, 8 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/alsactl/lock.c b/alsactl/lock.c
|
|
||||||
index 05f6e4d2a102..5b4746231996 100644
|
|
||||||
--- a/alsactl/lock.c
|
|
||||||
+++ b/alsactl/lock.c
|
|
||||||
@@ -63,10 +63,15 @@ static int state_lock_(const char *file, int lock, int timeout, int _fd)
|
|
||||||
if (fd < 0) {
|
|
||||||
if (errno == EBUSY || errno == EAGAIN) {
|
|
||||||
sleep(1);
|
|
||||||
- } else {
|
|
||||||
- err = -errno;
|
|
||||||
- goto out;
|
|
||||||
+ continue;
|
|
||||||
}
|
|
||||||
+ if (errno == EEXIST) {
|
|
||||||
+ fd = open(nfile, O_RDWR);
|
|
||||||
+ if (fd >= 0)
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ err = -errno;
|
|
||||||
+ goto out;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.26.2
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
|||||||
From 12487b40b6e7230a003eb6e4333ee820d8578592 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Takashi Iwai <tiwai@suse.de>
|
|
||||||
Date: Fri, 11 Dec 2020 23:55:34 +0100
|
|
||||||
Subject: [PATCH ] alsactl: Remove asound.state file check from alsa-restore.service again
|
|
||||||
|
|
||||||
We added the check of asound.state file presence some time ago to
|
|
||||||
assure that alsactl gets called only if the state file is already
|
|
||||||
present. Since then, the situation has changed significantly:
|
|
||||||
e.g. now alsactl does initialize if the state file isn't present, and
|
|
||||||
the same alsa-restore.service is used to save the state. This means
|
|
||||||
that we should start this service no matter the state file exists at
|
|
||||||
the boot time or not. So, revert the old change again.
|
|
||||||
|
|
||||||
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
|
||||||
---
|
|
||||||
alsactl/alsa-restore.service.in | 1 -
|
|
||||||
1 file changed, 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/alsactl/alsa-restore.service.in b/alsactl/alsa-restore.service.in
|
|
||||||
index a84c2e842444..80fd5fd48203 100644
|
|
||||||
--- a/alsactl/alsa-restore.service.in
|
|
||||||
+++ b/alsactl/alsa-restore.service.in
|
|
||||||
@@ -7,7 +7,6 @@
|
|
||||||
Description=Save/Restore Sound Card State
|
|
||||||
ConditionPathExists=!@daemonswitch@
|
|
||||||
ConditionPathExistsGlob=/dev/snd/control*
|
|
||||||
-ConditionPathExists=@asoundrcfile@
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=oneshot
|
|
||||||
--
|
|
||||||
2.26.2
|
|
||||||
|
|
@ -1,108 +0,0 @@
|
|||||||
From 76bc37aeb77d51f995e223582d25335cd98b2eea Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
Date: Sun, 3 Jan 2021 17:19:03 +0100
|
|
||||||
Subject: [PATCH 13/25] aplay: add test code for snd_pcm_status() to
|
|
||||||
--test-position
|
|
||||||
|
|
||||||
We need to test also snd_pcm_status() values.
|
|
||||||
|
|
||||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
---
|
|
||||||
aplay/aplay.c | 48 ++++++++++++++++++++++++++++++++++++++----------
|
|
||||||
1 file changed, 38 insertions(+), 10 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/aplay/aplay.c b/aplay/aplay.c
|
|
||||||
index d385da25fea1..5a6d5c33102c 100644
|
|
||||||
--- a/aplay/aplay.c
|
|
||||||
+++ b/aplay/aplay.c
|
|
||||||
@@ -1953,22 +1953,38 @@ static void do_test_position(void)
|
|
||||||
static snd_pcm_sframes_t minavail, mindelay;
|
|
||||||
static snd_pcm_sframes_t badavail = 0, baddelay = 0;
|
|
||||||
snd_pcm_sframes_t outofrange;
|
|
||||||
- snd_pcm_sframes_t avail, delay;
|
|
||||||
+ snd_pcm_sframes_t avail, delay, savail, sdelay;
|
|
||||||
+ snd_pcm_status_t *status;
|
|
||||||
int err;
|
|
||||||
|
|
||||||
+ snd_pcm_status_alloca(&status);
|
|
||||||
err = snd_pcm_avail_delay(handle, &avail, &delay);
|
|
||||||
if (err < 0)
|
|
||||||
return;
|
|
||||||
+ err = snd_pcm_status(handle, status);
|
|
||||||
+ if (err < 0)
|
|
||||||
+ return;
|
|
||||||
+ savail = snd_pcm_status_get_avail(status);
|
|
||||||
+ sdelay = snd_pcm_status_get_delay(status);
|
|
||||||
outofrange = (test_coef * (snd_pcm_sframes_t)buffer_frames) / 2;
|
|
||||||
if (avail > outofrange || avail < -outofrange ||
|
|
||||||
delay > outofrange || delay < -outofrange) {
|
|
||||||
- badavail = avail; baddelay = delay;
|
|
||||||
- availsum = delaysum = samples = 0;
|
|
||||||
- maxavail = maxdelay = 0;
|
|
||||||
- minavail = mindelay = buffer_frames * 16;
|
|
||||||
- fprintf(stderr, _("Suspicious buffer position (%li total): "
|
|
||||||
- "avail = %li, delay = %li, buffer = %li\n"),
|
|
||||||
- ++counter, (long)avail, (long)delay, (long)buffer_frames);
|
|
||||||
+ badavail = avail; baddelay = delay;
|
|
||||||
+ availsum = delaysum = samples = 0;
|
|
||||||
+ maxavail = maxdelay = 0;
|
|
||||||
+ minavail = mindelay = buffer_frames * 16;
|
|
||||||
+ fprintf(stderr, _("Suspicious buffer position (%li total): "
|
|
||||||
+ "avail = %li, delay = %li, buffer = %li\n"),
|
|
||||||
+ ++counter, (long)avail, (long)delay, (long)buffer_frames);
|
|
||||||
+ } else if (savail > outofrange || savail < -outofrange ||
|
|
||||||
+ sdelay > outofrange || sdelay < -outofrange) {
|
|
||||||
+ badavail = savail; baddelay = sdelay;
|
|
||||||
+ availsum = delaysum = samples = 0;
|
|
||||||
+ maxavail = maxdelay = 0;
|
|
||||||
+ minavail = mindelay = buffer_frames * 16;
|
|
||||||
+ fprintf(stderr, _("Suspicious status buffer position (%li total): "
|
|
||||||
+ "avail = %li, delay = %li, buffer = %li\n"),
|
|
||||||
+ ++counter, (long)savail, (long)sdelay, (long)buffer_frames);
|
|
||||||
} else if (verbose) {
|
|
||||||
time(&now);
|
|
||||||
if (tmr == (time_t) -1) {
|
|
||||||
@@ -1979,19 +1995,27 @@ static void do_test_position(void)
|
|
||||||
}
|
|
||||||
if (avail > maxavail)
|
|
||||||
maxavail = avail;
|
|
||||||
+ if (savail > maxavail)
|
|
||||||
+ maxavail = savail;
|
|
||||||
if (delay > maxdelay)
|
|
||||||
maxdelay = delay;
|
|
||||||
+ if (sdelay > maxdelay)
|
|
||||||
+ maxdelay = sdelay;
|
|
||||||
if (avail < minavail)
|
|
||||||
minavail = avail;
|
|
||||||
+ if (savail < minavail)
|
|
||||||
+ minavail = savail;
|
|
||||||
if (delay < mindelay)
|
|
||||||
mindelay = delay;
|
|
||||||
+ if (sdelay < mindelay)
|
|
||||||
+ mindelay = sdelay;
|
|
||||||
availsum += avail;
|
|
||||||
delaysum += delay;
|
|
||||||
samples++;
|
|
||||||
- if (avail != 0 && now != tmr) {
|
|
||||||
+ if ((maxavail != 0 || maxdelay != 0) && now != tmr) {
|
|
||||||
fprintf(stderr, "BUFPOS: avg%li/%li "
|
|
||||||
"min%li/%li max%li/%li (%li) (%li:%li/%li)\n",
|
|
||||||
- (long)(availsum / samples),
|
|
||||||
+ (long)(availsum / samples),
|
|
||||||
(long)(delaysum / samples),
|
|
||||||
(long)minavail, (long)mindelay,
|
|
||||||
(long)maxavail, (long)maxdelay,
|
|
||||||
@@ -2000,6 +2024,10 @@ static void do_test_position(void)
|
|
||||||
tmr = now;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+ if (verbose == 1) {
|
|
||||||
+ fprintf(stderr, _("Status(R/W) (standalone avail=%li delay=%li):\n"), (long)avail, (long)delay);
|
|
||||||
+ snd_pcm_status_dump(status, log);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
--
|
|
||||||
2.26.2
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
|||||||
From 03e98d280678563acbfece12eab4b571026226b1 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Curtis Malainey <cujomalainey@chromium.org>
|
|
||||||
Date: Wed, 6 Jan 2021 16:23:23 -0800
|
|
||||||
Subject: [PATCH 14/25] ucm: fix typo in docs
|
|
||||||
|
|
||||||
Do you know the tstaus of this fix?
|
|
||||||
|
|
||||||
Signed-off-by: Curtis Malainey <cujomalainey@chromium.org>
|
|
||||||
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
|
||||||
---
|
|
||||||
alsaucm/alsaucm.rst | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/alsaucm/alsaucm.rst b/alsaucm/alsaucm.rst
|
|
||||||
index 7890ba5377b8..3098672d3d55 100644
|
|
||||||
--- a/alsaucm/alsaucm.rst
|
|
||||||
+++ b/alsaucm/alsaucm.rst
|
|
||||||
@@ -122,7 +122,7 @@ Available commands:
|
|
||||||
the value of the `IDENTIFIER` argument can can be:
|
|
||||||
|
|
||||||
- ``_devstatus/{device}``
|
|
||||||
- - ``_modtstaus/{device}``
|
|
||||||
+ - ``_modstatus/{device}``
|
|
||||||
|
|
||||||
``set`` `IDENTIFIER` `VALUE`
|
|
||||||
set string value
|
|
||||||
--
|
|
||||||
2.26.2
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
|||||||
From 05ebe64b2dd82fd053d7e4cbc709004e240ac13f Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
Date: Mon, 4 Jan 2021 12:13:03 +0100
|
|
||||||
Subject: [PATCH 15/25] aplay: add avail > delay checks to --test-position
|
|
||||||
|
|
||||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
---
|
|
||||||
aplay/aplay.c | 8 ++++++++
|
|
||||||
1 file changed, 8 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/aplay/aplay.c b/aplay/aplay.c
|
|
||||||
index 5a6d5c33102c..b75be6c55794 100644
|
|
||||||
--- a/aplay/aplay.c
|
|
||||||
+++ b/aplay/aplay.c
|
|
||||||
@@ -1985,6 +1985,14 @@ static void do_test_position(void)
|
|
||||||
fprintf(stderr, _("Suspicious status buffer position (%li total): "
|
|
||||||
"avail = %li, delay = %li, buffer = %li\n"),
|
|
||||||
++counter, (long)savail, (long)sdelay, (long)buffer_frames);
|
|
||||||
+ } else if (avail > delay) {
|
|
||||||
+ fprintf(stderr, _("Suspicious buffer position avail > delay (%li total): "
|
|
||||||
+ "avail = %li, delay = %li\n"),
|
|
||||||
+ ++counter, (long)avail, (long)delay);
|
|
||||||
+ } else if (savail > sdelay) {
|
|
||||||
+ fprintf(stderr, _("Suspicious status buffer position avail > delay (%li total): "
|
|
||||||
+ "avail = %li, delay = %li\n"),
|
|
||||||
+ ++counter, (long)savail, (long)sdelay);
|
|
||||||
} else if (verbose) {
|
|
||||||
time(&now);
|
|
||||||
if (tmr == (time_t) -1) {
|
|
||||||
--
|
|
||||||
2.26.2
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
|||||||
From 42ca978078e09eb7e0044d2d8453b1a9cb69d9fe Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
Date: Fri, 8 Jan 2021 18:07:57 +0100
|
|
||||||
Subject: [PATCH 16/25] alsactl: daemon - read_pid_file() fix the returned code
|
|
||||||
on read error
|
|
||||||
|
|
||||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
---
|
|
||||||
alsactl/daemon.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/alsactl/daemon.c b/alsactl/daemon.c
|
|
||||||
index 65f7ac1cdd0a..ee03991ef5f1 100644
|
|
||||||
--- a/alsactl/daemon.c
|
|
||||||
+++ b/alsactl/daemon.c
|
|
||||||
@@ -284,7 +284,7 @@ static long read_pid_file(const char *pidfile)
|
|
||||||
err = err < 0 ? -errno : -EIO;
|
|
||||||
close(fd);
|
|
||||||
pid_txt[11] = '\0';
|
|
||||||
- return atol(pid_txt);
|
|
||||||
+ return err < 0 ? err : atol(pid_txt);
|
|
||||||
} else {
|
|
||||||
return -errno;
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.26.2
|
|
||||||
|
|
@ -1,36 +0,0 @@
|
|||||||
From e55534d8a5f05a6650d3147867bbcb7bb70e64cd Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
Date: Fri, 8 Jan 2021 18:15:43 +0100
|
|
||||||
Subject: [PATCH 17/25] alsactl: init - set_ctl_value() - fix bytes parsing
|
|
||||||
|
|
||||||
Use the correct error value handling from hextodigit().
|
|
||||||
|
|
||||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
---
|
|
||||||
alsactl/init_parse.c | 7 ++++---
|
|
||||||
1 file changed, 4 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/alsactl/init_parse.c b/alsactl/init_parse.c
|
|
||||||
index ee9cc6d8f1b1..58b46f42de4b 100644
|
|
||||||
--- a/alsactl/init_parse.c
|
|
||||||
+++ b/alsactl/init_parse.c
|
|
||||||
@@ -465,12 +465,13 @@ static int set_ctl_value(struct space *space, const char *value, int all)
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
for (idx = 0; idx < count; idx += 2) {
|
|
||||||
- val = hextodigit(*(value++)) << 4;
|
|
||||||
- val |= hextodigit(*(value++));
|
|
||||||
- if (val > 255) {
|
|
||||||
+ int nibble1 = hextodigit(*(value++));
|
|
||||||
+ int nibble2 = hextodigit(*(value++));
|
|
||||||
+ if (nibble1 < 0 || nibble2 < 0) {
|
|
||||||
Perror(space, "bad ctl hexa value");
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
+ val = (nibble1 << 4) | nibble2;
|
|
||||||
snd_ctl_elem_value_set_byte(space->ctl_value, idx, val);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
--
|
|
||||||
2.26.2
|
|
||||||
|
|
@ -1,25 +0,0 @@
|
|||||||
From c5ecfd97894b429712d334eb91fa46e687b5ed0f Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
Date: Fri, 8 Jan 2021 18:18:53 +0100
|
|
||||||
Subject: [PATCH 18/25] alsactl: init - parse() - fix possible double free
|
|
||||||
|
|
||||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
---
|
|
||||||
alsactl/init_parse.c | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/alsactl/init_parse.c b/alsactl/init_parse.c
|
|
||||||
index 58b46f42de4b..71348da3729c 100644
|
|
||||||
--- a/alsactl/init_parse.c
|
|
||||||
+++ b/alsactl/init_parse.c
|
|
||||||
@@ -1701,6 +1701,7 @@ static int parse(struct space *space, const char *filename)
|
|
||||||
|
|
||||||
if (count > linesize - 1) {
|
|
||||||
free(line);
|
|
||||||
+ line = NULL;
|
|
||||||
linesize = (count + 127 + 1) & ~127;
|
|
||||||
if (linesize > 2048) {
|
|
||||||
error("file %s, line %i too long", filename, linenum);
|
|
||||||
--
|
|
||||||
2.26.2
|
|
||||||
|
|
@ -1,38 +0,0 @@
|
|||||||
From 90bbeb1d3ee892be97560c069b22ecab4bb2bf6a Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
Date: Fri, 8 Jan 2021 18:21:39 +0100
|
|
||||||
Subject: [PATCH 19/25] alsaloop: fix possible memory leak in
|
|
||||||
create_loopback_handle()
|
|
||||||
|
|
||||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
---
|
|
||||||
alsaloop/alsaloop.c | 9 +++++++--
|
|
||||||
1 file changed, 7 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/alsaloop/alsaloop.c b/alsaloop/alsaloop.c
|
|
||||||
index 6a9ce58813ce..06ffadfb1911 100644
|
|
||||||
--- a/alsaloop/alsaloop.c
|
|
||||||
+++ b/alsaloop/alsaloop.c
|
|
||||||
@@ -85,12 +85,17 @@ static int create_loopback_handle(struct loopback_handle **_handle,
|
|
||||||
if (device == NULL)
|
|
||||||
device = "hw:0,0";
|
|
||||||
handle->device = strdup(device);
|
|
||||||
- if (handle->device == NULL)
|
|
||||||
+ if (handle->device == NULL) {
|
|
||||||
+ free(handle);
|
|
||||||
return -ENOMEM;
|
|
||||||
+ }
|
|
||||||
if (ctldev) {
|
|
||||||
handle->ctldev = strdup(ctldev);
|
|
||||||
- if (handle->ctldev == NULL)
|
|
||||||
+ if (handle->ctldev == NULL) {
|
|
||||||
+ free(handle->device);
|
|
||||||
+ free(handle);
|
|
||||||
return -ENOMEM;
|
|
||||||
+ }
|
|
||||||
} else {
|
|
||||||
handle->ctldev = NULL;
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.26.2
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
|||||||
From c9b4293212a4b67a5cf3c27a65ecbe466f773e61 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
Date: Fri, 8 Jan 2021 18:29:56 +0100
|
|
||||||
Subject: [PATCH 20/25] alsaloop: get_queued_playback_samples() - simplify code
|
|
||||||
|
|
||||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
---
|
|
||||||
alsaloop/pcmjob.c | 3 +--
|
|
||||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/alsaloop/pcmjob.c b/alsaloop/pcmjob.c
|
|
||||||
index 6a9aff4dd49a..01e01994c00d 100644
|
|
||||||
--- a/alsaloop/pcmjob.c
|
|
||||||
+++ b/alsaloop/pcmjob.c
|
|
||||||
@@ -1698,9 +1698,8 @@ int pcmjob_pollfds_init(struct loopback *loop, struct pollfd *fds)
|
|
||||||
static snd_pcm_sframes_t get_queued_playback_samples(struct loopback *loop)
|
|
||||||
{
|
|
||||||
snd_pcm_sframes_t delay;
|
|
||||||
- int err;
|
|
||||||
|
|
||||||
- if ((err = snd_pcm_delay(loop->play->handle, &delay)) < 0)
|
|
||||||
+ if (snd_pcm_delay(loop->play->handle, &delay) < 0)
|
|
||||||
return 0;
|
|
||||||
loop->play->last_delay = delay;
|
|
||||||
delay += loop->play->buf_count;
|
|
||||||
--
|
|
||||||
2.26.2
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
|||||||
From 88513212c564fb8cbcbbb43f433d73cb4db786e5 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
Date: Fri, 8 Jan 2021 18:33:28 +0100
|
|
||||||
Subject: [PATCH 21/25] topology: fix possible double free in load()
|
|
||||||
|
|
||||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
---
|
|
||||||
topology/topology.c | 4 +---
|
|
||||||
1 file changed, 1 insertion(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/topology/topology.c b/topology/topology.c
|
|
||||||
index d52b1452fdc2..c2f094324266 100644
|
|
||||||
--- a/topology/topology.c
|
|
||||||
+++ b/topology/topology.c
|
|
||||||
@@ -100,10 +100,8 @@ static int load(const char *source_file, void **dst, size_t *dst_size)
|
|
||||||
pos += r;
|
|
||||||
size += 8*1024;
|
|
||||||
buf2 = realloc(buf, size);
|
|
||||||
- if (buf2 == NULL) {
|
|
||||||
- free(buf);
|
|
||||||
+ if (buf2 == NULL)
|
|
||||||
goto _nomem;
|
|
||||||
- }
|
|
||||||
buf = buf2;
|
|
||||||
}
|
|
||||||
if (r < 0) {
|
|
||||||
--
|
|
||||||
2.26.2
|
|
||||||
|
|
@ -1,39 +0,0 @@
|
|||||||
From b0c4ed248e9f543afe671e253fe1bb285df06477 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
Date: Mon, 11 Jan 2021 10:40:53 +0100
|
|
||||||
Subject: [PATCH 22/25] alsamixer: remove dead fcn widget_handle_key() in
|
|
||||||
widget.c
|
|
||||||
|
|
||||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
---
|
|
||||||
alsamixer/widget.c | 7 -------
|
|
||||||
1 file changed, 7 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/alsamixer/widget.c b/alsamixer/widget.c
|
|
||||||
index 17f3aceef35a..5fedaba974eb 100644
|
|
||||||
--- a/alsamixer/widget.c
|
|
||||||
+++ b/alsamixer/widget.c
|
|
||||||
@@ -29,10 +29,6 @@ int screen_cols;
|
|
||||||
|
|
||||||
static int cursor_visibility = -1;
|
|
||||||
|
|
||||||
-static void widget_handle_key(int key)
|
|
||||||
-{
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
static void update_cursor_visibility(void)
|
|
||||||
{
|
|
||||||
const struct widget *active_widget;
|
|
||||||
@@ -87,9 +83,6 @@ void widget_init(struct widget *widget, int lines_, int cols, int y, int x,
|
|
||||||
set_panel_userptr(widget->panel, widget);
|
|
||||||
}
|
|
||||||
|
|
||||||
- //if (!widget->handle_key)
|
|
||||||
- // widget->handle_key = widget_handle_key;
|
|
||||||
-
|
|
||||||
if (old_window)
|
|
||||||
delwin(old_window);
|
|
||||||
|
|
||||||
--
|
|
||||||
2.26.2
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
|||||||
From e165d3413e911b32441a0311d0ec0f280748e22b Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
Date: Mon, 11 Jan 2021 10:41:32 +0100
|
|
||||||
Subject: [PATCH 23/25] alsamixer: remove unused variable y in
|
|
||||||
display_scroll_indicators()
|
|
||||||
|
|
||||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
---
|
|
||||||
alsamixer/mixer_display.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/alsamixer/mixer_display.c b/alsamixer/mixer_display.c
|
|
||||||
index 882781de5f49..330fdd5378e8 100644
|
|
||||||
--- a/alsamixer/mixer_display.c
|
|
||||||
+++ b/alsamixer/mixer_display.c
|
|
||||||
@@ -634,7 +634,7 @@ static void display_control(unsigned int control_index)
|
|
||||||
|
|
||||||
static void display_scroll_indicators(void)
|
|
||||||
{
|
|
||||||
- int y0, y1, y;
|
|
||||||
+ int y0, y1;
|
|
||||||
chtype left, right;
|
|
||||||
|
|
||||||
if (screen_too_small)
|
|
||||||
--
|
|
||||||
2.26.2
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
|||||||
From 19cc5daef42c84bdadbaa25d1c4e1da33eeae3cc Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
Date: Mon, 11 Jan 2021 10:44:38 +0100
|
|
||||||
Subject: [PATCH 24/25] alsamixer: fix shift in parse_words()
|
|
||||||
|
|
||||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
---
|
|
||||||
alsamixer/configparser.c | 4 ++--
|
|
||||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/alsamixer/configparser.c b/alsamixer/configparser.c
|
|
||||||
index 93aa72afd04d..7647987f84d6 100644
|
|
||||||
--- a/alsamixer/configparser.c
|
|
||||||
+++ b/alsamixer/configparser.c
|
|
||||||
@@ -155,7 +155,7 @@ const char *mixer_words =
|
|
||||||
static unsigned int parse_words(const char *name, const char* wordlist, unsigned int itemlen, unsigned int *number) {
|
|
||||||
unsigned int words = 0;
|
|
||||||
unsigned int word;
|
|
||||||
- unsigned int i;
|
|
||||||
+ int i;
|
|
||||||
char buf[16];
|
|
||||||
char *endptr;
|
|
||||||
|
|
||||||
@@ -181,7 +181,7 @@ static unsigned int parse_words(const char *name, const char* wordlist, unsigned
|
|
||||||
word = W_NUMBER;
|
|
||||||
}
|
|
||||||
else if ((i = strlist_index(wordlist, itemlen, buf)) >= 0)
|
|
||||||
- word = 2U << i;
|
|
||||||
+ word = i <= 30 ? (2U << i) : 0;
|
|
||||||
else
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
--
|
|
||||||
2.26.2
|
|
||||||
|
|
@ -1,34 +0,0 @@
|
|||||||
From b8a1e95773227e2b4942d2f67cc10f7d133d75ad Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
Date: Tue, 19 Jan 2021 12:36:28 +0100
|
|
||||||
Subject: [PATCH 25/25] aplay: fix the test position test for playback (avail >
|
|
||||||
delay)
|
|
||||||
|
|
||||||
The avail > delay condition is invalid only for capture, of course.
|
|
||||||
|
|
||||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
---
|
|
||||||
aplay/aplay.c | 4 ++--
|
|
||||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/aplay/aplay.c b/aplay/aplay.c
|
|
||||||
index b75be6c55794..9c827f468d5a 100644
|
|
||||||
--- a/aplay/aplay.c
|
|
||||||
+++ b/aplay/aplay.c
|
|
||||||
@@ -1985,11 +1985,11 @@ static void do_test_position(void)
|
|
||||||
fprintf(stderr, _("Suspicious status buffer position (%li total): "
|
|
||||||
"avail = %li, delay = %li, buffer = %li\n"),
|
|
||||||
++counter, (long)savail, (long)sdelay, (long)buffer_frames);
|
|
||||||
- } else if (avail > delay) {
|
|
||||||
+ } else if (stream == SND_PCM_STREAM_CAPTURE && avail > delay) {
|
|
||||||
fprintf(stderr, _("Suspicious buffer position avail > delay (%li total): "
|
|
||||||
"avail = %li, delay = %li\n"),
|
|
||||||
++counter, (long)avail, (long)delay);
|
|
||||||
- } else if (savail > sdelay) {
|
|
||||||
+ } else if (stream == SND_PCM_STREAM_CAPTURE && savail > sdelay) {
|
|
||||||
fprintf(stderr, _("Suspicious status buffer position avail > delay (%li total): "
|
|
||||||
"avail = %li, delay = %li\n"),
|
|
||||||
++counter, (long)savail, (long)sdelay);
|
|
||||||
--
|
|
||||||
2.26.2
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:98ffc2d599de0577d423a48fa5f20a992ca0b82d812ed1f2e58ade49ac6da426
|
|
||||||
size 1286259
|
|
3
alsa-utils-1.2.5.1.tar.bz2
Normal file
3
alsa-utils-1.2.5.1.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:9c169ae37a49295f9b97b92ace772803daf6b6510a19574e0b78f87e562118d0
|
||||||
|
size 1326965
|
@ -1,3 +1,37 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Jun 14 15:04:57 CEST 2021 - tiwai@suse.de
|
||||||
|
|
||||||
|
- Update to alsa-utils 1.2.5:
|
||||||
|
a major version up, including previous patches
|
||||||
|
https://www.alsa-project.org/wiki/Changes_v1.2.4_v1.2.5
|
||||||
|
- Update to alsa-utils 1.2.5.1:
|
||||||
|
a small bugfix release
|
||||||
|
https://www.alsa-project.org/wiki/Changes_v1.2.5_v1.2.5.1
|
||||||
|
- Drop the obsoleted patches:
|
||||||
|
0001-aplay-try-to-use-16-bit-format-to-increase-capture-q.patch
|
||||||
|
0002-alsamixer-Fix-the-mixer-views-description-in-man-pag.patch
|
||||||
|
0003-Add-Slovak-translation.patch
|
||||||
|
0004-Add-Basque-translation.patch
|
||||||
|
0006-aplay-cosmetic-code-fix-in-xrun.patch
|
||||||
|
0007-aplay-fix-the-CPU-busy-loop-in-the-pause-handler.patch
|
||||||
|
0008-alsa-info-Add-lsusb-and-stream-outputs.patch
|
||||||
|
0010-alsactl-Fix-double-decrease-of-lock-timeout.patch
|
||||||
|
0011-alsactl-Fix-race-at-creating-a-lock-file.patch
|
||||||
|
0012-alsactl-Remove-asound.state-file-check-from-alsa-res.patch
|
||||||
|
0013-aplay-add-test-code-for-snd_pcm_status-to-test-posit.patch
|
||||||
|
0014-ucm-fix-typo-in-docs.patch
|
||||||
|
0015-aplay-add-avail-delay-checks-to-test-position.patch
|
||||||
|
0016-alsactl-daemon-read_pid_file-fix-the-returned-code-o.patch
|
||||||
|
0017-alsactl-init-set_ctl_value-fix-bytes-parsing.patch
|
||||||
|
0018-alsactl-init-parse-fix-possible-double-free.patch
|
||||||
|
0019-alsaloop-fix-possible-memory-leak-in-create_loopback.patch
|
||||||
|
0020-alsaloop-get_queued_playback_samples-simplify-code.patch
|
||||||
|
0021-topology-fix-possible-double-free-in-load.patch
|
||||||
|
0022-alsamixer-remove-dead-fcn-widget_handle_key-in-widge.patch
|
||||||
|
0023-alsamixer-remove-unused-variable-y-in-display_scroll.patch
|
||||||
|
0024-alsamixer-fix-shift-in-parse_words.patch
|
||||||
|
0025-aplay-fix-the-test-position-test-for-playback-avail-.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Apr 26 10:34:15 CEST 2021 - tiwai@suse.de
|
Mon Apr 26 10:34:15 CEST 2021 - tiwai@suse.de
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
%define do_autoreconf 1
|
%define do_autoreconf 1
|
||||||
%define _udevdir %(pkg-config --variable=udevdir udev)
|
%define _udevdir %(pkg-config --variable=udevdir udev)
|
||||||
Name: alsa-utils
|
Name: alsa-utils
|
||||||
Version: 1.2.4
|
Version: 1.2.5.1
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: Advanced Linux Sound Architecture Utilities
|
Summary: Advanced Linux Sound Architecture Utilities
|
||||||
License: GPL-2.0-or-later
|
License: GPL-2.0-or-later
|
||||||
@ -29,29 +29,6 @@ Source: ftp://ftp.alsa-project.org/pub/utils/alsa-utils-%{version}.tar.b
|
|||||||
Source1: 01beep.conf
|
Source1: 01beep.conf
|
||||||
Source2: sound-extra.service
|
Source2: sound-extra.service
|
||||||
Source5: load-sound-modules.sh
|
Source5: load-sound-modules.sh
|
||||||
Patch1: 0001-aplay-try-to-use-16-bit-format-to-increase-capture-q.patch
|
|
||||||
Patch2: 0002-alsamixer-Fix-the-mixer-views-description-in-man-pag.patch
|
|
||||||
Patch3: 0003-Add-Slovak-translation.patch
|
|
||||||
Patch4: 0004-Add-Basque-translation.patch
|
|
||||||
Patch6: 0006-aplay-cosmetic-code-fix-in-xrun.patch
|
|
||||||
Patch7: 0007-aplay-fix-the-CPU-busy-loop-in-the-pause-handler.patch
|
|
||||||
Patch8: 0008-alsa-info-Add-lsusb-and-stream-outputs.patch
|
|
||||||
Patch10: 0010-alsactl-Fix-double-decrease-of-lock-timeout.patch
|
|
||||||
Patch11: 0011-alsactl-Fix-race-at-creating-a-lock-file.patch
|
|
||||||
Patch12: 0012-alsactl-Remove-asound.state-file-check-from-alsa-res.patch
|
|
||||||
Patch13: 0013-aplay-add-test-code-for-snd_pcm_status-to-test-posit.patch
|
|
||||||
Patch14: 0014-ucm-fix-typo-in-docs.patch
|
|
||||||
Patch15: 0015-aplay-add-avail-delay-checks-to-test-position.patch
|
|
||||||
Patch16: 0016-alsactl-daemon-read_pid_file-fix-the-returned-code-o.patch
|
|
||||||
Patch17: 0017-alsactl-init-set_ctl_value-fix-bytes-parsing.patch
|
|
||||||
Patch18: 0018-alsactl-init-parse-fix-possible-double-free.patch
|
|
||||||
Patch19: 0019-alsaloop-fix-possible-memory-leak-in-create_loopback.patch
|
|
||||||
Patch20: 0020-alsaloop-get_queued_playback_samples-simplify-code.patch
|
|
||||||
Patch21: 0021-topology-fix-possible-double-free-in-load.patch
|
|
||||||
Patch22: 0022-alsamixer-remove-dead-fcn-widget_handle_key-in-widge.patch
|
|
||||||
Patch23: 0023-alsamixer-remove-unused-variable-y-in-display_scroll.patch
|
|
||||||
Patch24: 0024-alsamixer-fix-shift-in-parse_words.patch
|
|
||||||
Patch25: 0025-aplay-fix-the-test-position-test-for-playback-avail-.patch
|
|
||||||
Patch100: alsa-info-no-update-for-distro-script.patch
|
Patch100: alsa-info-no-update-for-distro-script.patch
|
||||||
Patch101: alsa-utils-configure-version-revert.patch
|
Patch101: alsa-utils-configure-version-revert.patch
|
||||||
BuildRequires: alsa-devel
|
BuildRequires: alsa-devel
|
||||||
@ -95,29 +72,6 @@ and test audio before and after PM state changes.
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
%patch1 -p1
|
|
||||||
%patch2 -p1
|
|
||||||
%patch3 -p1
|
|
||||||
%patch4 -p1
|
|
||||||
%patch6 -p1
|
|
||||||
%patch7 -p1
|
|
||||||
%patch8 -p1
|
|
||||||
%patch10 -p1
|
|
||||||
%patch11 -p1
|
|
||||||
%patch12 -p1
|
|
||||||
%patch13 -p1
|
|
||||||
%patch14 -p1
|
|
||||||
%patch15 -p1
|
|
||||||
%patch16 -p1
|
|
||||||
%patch17 -p1
|
|
||||||
%patch18 -p1
|
|
||||||
%patch19 -p1
|
|
||||||
%patch20 -p1
|
|
||||||
%patch21 -p1
|
|
||||||
%patch22 -p1
|
|
||||||
%patch23 -p1
|
|
||||||
%patch24 -p1
|
|
||||||
%patch25 -p1
|
|
||||||
%patch100 -p1
|
%patch100 -p1
|
||||||
%if 0%{?do_autoreconf}
|
%if 0%{?do_autoreconf}
|
||||||
%patch101 -p1
|
%patch101 -p1
|
||||||
|
Loading…
Reference in New Issue
Block a user