Hello community,

here is the log from the commit of package alsa-utils for openSUSE:Factory 
checked in at 2015-10-03 20:28:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/alsa-utils (Old)
 and      /work/SRC/openSUSE:Factory/.alsa-utils.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "alsa-utils"

Changes:
--------
--- /work/SRC/openSUSE:Factory/alsa-utils/alsa-utils.changes    2015-08-21 
07:38:06.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.alsa-utils.new/alsa-utils.changes       
2015-10-03 20:29:25.000000000 +0200
@@ -1,0 +2,10 @@
+Tue Sep 29 17:30:30 CEST 2015 - [email protected]
+
+- Backport upstream fixes: particularly fixing the inconsistent
+  mixer state after service reload (bnc#929619):
+  0010-speaker-test-fix-option-ordering.patch
+  0011-arecord-Remove-only-regular-files.patch
+  0012-aplay-fix-VU-meter-for-S24_LE-etc-formats.patch
+  0013-alsactl-Manage-both-save-and-restore-in-a-single-uni.patch
+
+-------------------------------------------------------------------

New:
----
  0010-speaker-test-fix-option-ordering.patch
  0011-arecord-Remove-only-regular-files.patch
  0012-aplay-fix-VU-meter-for-S24_LE-etc-formats.patch
  0013-alsactl-Manage-both-save-and-restore-in-a-single-uni.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ alsa-utils.spec ++++++
--- /var/tmp/diff_new_pack.kasF44/_old  2015-10-03 20:29:26.000000000 +0200
+++ /var/tmp/diff_new_pack.kasF44/_new  2015-10-03 20:29:26.000000000 +0200
@@ -54,6 +54,10 @@
 Patch7:         0007-speaker-test-Add-option-to-specify-signal-scale.patch
 Patch8:         0008-topology-Add-command-line-topology-tool-to-build-top.patch
 Patch9:         0009-alsactl-Add-path-condition-to-alsa-store-and-alsa-re.patch
+Patch10:        0010-speaker-test-fix-option-ordering.patch
+Patch11:        0011-arecord-Remove-only-regular-files.patch
+Patch12:        0012-aplay-fix-VU-meter-for-S24_LE-etc-formats.patch
+Patch13:        0013-alsactl-Manage-both-save-and-restore-in-a-single-uni.patch
 #
 Patch99:        alsa-utils-gettext-version-removal.diff
 BuildRequires:  alsa-devel
@@ -90,6 +94,10 @@
 %patch7 -p1
 %patch8 -p1
 %patch9 -p1
+%patch10 -p1
+%patch11 -p1
+%patch12 -p1
+%patch13 -p1
 #
 %if 0%{?suse_version} < 1020
 %patch99 -p1
@@ -146,7 +154,6 @@
 %{_unitdir}/*.service
 %{_unitdir}/basic.target.wants/alsa-state.service
 %{_unitdir}/basic.target.wants/alsa-restore.service
-%{_unitdir}/shutdown.target.wants/alsa-store.service
 %endif
 %if %{use_varlib}
 %{_localstatedir}/lib/alsa

++++++ 0010-speaker-test-fix-option-ordering.patch ++++++
>From 4482cc7cfe97fd69b38687816a6450b0fcc9ba59 Mon Sep 17 00:00:00 2001
From: Ken Benoit <[email protected]>
Date: Thu, 17 Sep 2015 15:06:38 -0400
Subject: [PATCH] speaker-test: fix option ordering

The -c and -s options needed to be provided in a specific order for the -s 
option to work correctly.

This pulls the speaker option check outside of the option parsing so that all 
the options have been parsed before checking to see if the parameter to -s is 
correct.

Signed-off-by: Ken Benoit <[email protected]>
Signed-off-by: Jaroslav Kysela <[email protected]>
---
 speaker-test/speaker-test.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/speaker-test/speaker-test.c b/speaker-test/speaker-test.c
index 25970af1c9bc..5b9cbeca632d 100644
--- a/speaker-test/speaker-test.c
+++ b/speaker-test/speaker-test.c
@@ -1041,6 +1041,7 @@ int main(int argc, char *argv[]) {
   double               time1,time2,time3;
   unsigned int         n, nloops;
   struct   timeval     tv1,tv2;
+  int                  speakeroptset = 0;
 #ifdef CONFIG_SUPPORT_CHMAP
   const char *chmap = NULL;
 #endif
@@ -1162,11 +1163,7 @@ int main(int argc, char *argv[]) {
     case 's':
       speaker = atoi(optarg);
       speaker = speaker < 1 ? 0 : speaker;
-      speaker = speaker > channels ? 0 : speaker;
-      if (speaker==0) {
-        fprintf(stderr, _("Invalid parameter for -s option.\n"));
-        exit(EXIT_FAILURE);
-      }  
+      speakeroptset = 1;
       break;
     case 'w':
       given_test_wav_file = optarg;
@@ -1200,6 +1197,14 @@ int main(int argc, char *argv[]) {
     exit(EXIT_SUCCESS);
   }
 
+  if (speakeroptset) {
+    speaker = speaker > channels ? 0 : speaker;
+    if (speaker==0) {
+      fprintf(stderr, _("Invalid parameter for -s option.\n"));
+      exit(EXIT_FAILURE);
+    }
+  }
+
   if (!force_frequency) {
     freq = freq < 30.0 ? 30.0 : freq;
     freq = freq > 8000.0 ? 8000.0 : freq;
-- 
2.5.3

++++++ 0011-arecord-Remove-only-regular-files.patch ++++++
>From 5f0fc49a3ab9e9a66eb7a74582829c21556506a1 Mon Sep 17 00:00:00 2001
From: Alexander Volkov <[email protected]>
Date: Mon, 21 Sep 2015 16:05:57 +0300
Subject: [PATCH] arecord: Remove only regular files

arecord removes a file before writing into it. It's not
appropriate in some cases. For example, if you a pass
a symlink to a file, then the symlink will be removed
while the user expects to record into the symlink's target.
Another case is recording into the device file. Some
modems provide a tty device file as a voice device.
And it's not possible to write into it under root with
arecord, because it removes the device file.

So check the type of a file before writing into it and
remove only regular files.

Signed-off-by: Alexander Volkov <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
---
 aplay/aplay.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/aplay/aplay.c b/aplay/aplay.c
index 459f7dd6f667..1b2cdfc527ca 100644
--- a/aplay/aplay.c
+++ b/aplay/aplay.c
@@ -2929,6 +2929,7 @@ static void capture(char *orig_name)
        char *name = orig_name; /* current filename */
        char namebuf[PATH_MAX+1];
        off64_t count, rest;            /* number of bytes to capture */
+       struct stat statbuf;
 
        /* get number of bytes to capture */
        count = calc_count();
@@ -2973,7 +2974,10 @@ static void capture(char *orig_name)
                        }
                        
                        /* open a new file */
-                       remove(name);
+                       if (!lstat(name, &statbuf)) {
+                               if (S_ISREG(statbuf.st_mode))
+                                       remove(name);
+                       }
                        fd = safe_open(name);
                        if (fd < 0) {
                                perror(name);
-- 
2.5.3

++++++ 0012-aplay-fix-VU-meter-for-S24_LE-etc-formats.patch ++++++
>From cd1bb5f4a72c7364b2756db357d752a73baefc9b Mon Sep 17 00:00:00 2001
From: Ricard Wanderlof <[email protected]>
Date: Tue, 15 Sep 2015 13:10:00 +0200
Subject: [PATCH] aplay: fix VU meter for S24_LE etc formats

When recording or playing back audio in a format where the number of
significant bits is less than the physical width (e.g. S24_LE), the VU
meter code needs to consider the number of significant bits in the samples
rather than the physical sample width (e.g. 24 vs 32 bits). Otherwise the
resulting VU meter display will be far too low and it will just indicate
0% all the time.

Tested with a device supporting the S24_LE format.

Signed-off-by: Ricard Wanderlof <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
---
 aplay/aplay.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/aplay/aplay.c b/aplay/aplay.c
index 1b2cdfc527ca..7eacee3ca274 100644
--- a/aplay/aplay.c
+++ b/aplay/aplay.c
@@ -124,7 +124,7 @@ static int fatal_errors = 0;
 static int verbose = 0;
 static int vumeter = VUMETER_NONE;
 static int buffer_pos = 0;
-static size_t bits_per_sample, bits_per_frame;
+static size_t significant_bits_per_sample, bits_per_sample, bits_per_frame;
 static size_t chunk_bytes;
 static int test_position = 0;
 static int test_coef = 8;
@@ -1344,6 +1344,7 @@ static void set_params(void)
                snd_pcm_dump(handle, log);
 
        bits_per_sample = snd_pcm_format_physical_width(hwparams.format);
+       significant_bits_per_sample = snd_pcm_format_width(hwparams.format);
        bits_per_frame = bits_per_sample * hwparams.channels;
        chunk_bytes = chunk_size * bits_per_frame / 8;
        audiobuf = realloc(audiobuf, chunk_bytes);
@@ -1745,7 +1746,7 @@ static void compute_max_peak(u_char *data, size_t count)
                }
                return;
        }
-       max = 1 << (bits_per_sample-1);
+       max = 1 << (significant_bits_per_sample-1);
        if (max <= 0)
                max = 0x7fffffff;
 
-- 
2.5.3

++++++ 0013-alsactl-Manage-both-save-and-restore-in-a-single-uni.patch ++++++
>From 7d6673cc1388729a906a33a87cc9817d44e043ad Mon Sep 17 00:00:00 2001
From: Takashi Iwai <[email protected]>
Date: Tue, 29 Sep 2015 17:26:34 +0200
Subject: [PATCH] alsactl: Manage both save and restore in a single unit

With RemainAfterExit=true, we can manage both save and restore of the
card state in a single unit file.  This will fix also the case where
systemd reloads the service; with two individual units, it will
restore the previous state before saving, and may lead to inconsistent
state suddenly.

Also fix alsa-state.service as well to make both start and stop
working in a simpler way.

Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=929619
Signed-off-by: Takashi Iwai <[email protected]>
---
 alsactl/Makefile.am             | 14 ++------------
 alsactl/alsa-restore.service.in |  7 +++----
 alsactl/alsa-state.service.in   |  3 ---
 alsactl/alsa-store.service.in   | 16 ----------------
 4 files changed, 5 insertions(+), 35 deletions(-)
 delete mode 100644 alsactl/alsa-store.service.in

diff --git a/alsactl/Makefile.am b/alsactl/Makefile.am
index 47f06e906ced..cac8094687de 100644
--- a/alsactl/Makefile.am
+++ b/alsactl/Makefile.am
@@ -25,20 +25,15 @@ if HAVE_SYSTEMD
 
 systemdsystemunit_DATA = \
        alsa-state.service \
-       alsa-restore.service \
-       alsa-store.service
+       alsa-restore.service
 
 install-data-hook:
        $(MKDIR_P) -m 0755 \
-               $(DESTDIR)$(systemdsystemunitdir)/basic.target.wants \
-               $(DESTDIR)$(systemdsystemunitdir)/shutdown.target.wants
+               $(DESTDIR)$(systemdsystemunitdir)/basic.target.wants
        ( cd $(DESTDIR)$(systemdsystemunitdir)/basic.target.wants && \
                rm -f alsa-state.service alsa-restore.service && \
                $(LN_S) ../alsa-state.service alsa-state.service && \
                $(LN_S) ../alsa-restore.service alsa-restore.service)
-       ( cd $(DESTDIR)$(systemdsystemunitdir)/shutdown.target.wants && \
-               rm -f alsa-store.service && \
-               $(LN_S) ../alsa-store.service alsa-store.service )
 
 endif
 
@@ -54,22 +49,17 @@ alsa-state.service: alsa-state.service.in
 alsa-restore.service: alsa-restore.service.in
        $(edit)
 
-alsa-store.service: alsa-store.service.in
-       $(edit)
-
 90-alsa-restore.rules: 90-alsa-restore.rules.in
        $(edit)
 
 EXTRA_DIST += \
        alsa-state.service.in \
        alsa-restore.service.in \
-       alsa-store.service.in \
        90-alsa-restore.rules.in
 
 CLEANFILES = \
        alsa-state.service \
        alsa-restore.service \
-       alsa-store.service \
        90-alsa-restore.rules
 
 %.7: %.xml
diff --git a/alsactl/alsa-restore.service.in b/alsactl/alsa-restore.service.in
index d1a74d637457..2884098c26f0 100644
--- a/alsactl/alsa-restore.service.in
+++ b/alsactl/alsa-restore.service.in
@@ -4,15 +4,14 @@
 #
 
 [Unit]
-Description=Restore Sound Card State
+Description=Save/Restore Sound Card State
 ConditionPathExists=!@daemonswitch@
 ConditionPathExistsGlob=/dev/snd/control*
-DefaultDependencies=no
 After=alsa-state.service
-Before=shutdown.target
-Conflicts=shutdown.target
 
 [Service]
 Type=oneshot
+RemainAfterExit=true
 ExecStart=-@sbindir@/alsactl restore
+ExecStop=-@sbindir@/alsactl store
 StandardOutput=syslog
diff --git a/alsactl/alsa-state.service.in b/alsactl/alsa-state.service.in
index 56c12c104565..f1321d63a0ca 100644
--- a/alsactl/alsa-state.service.in
+++ b/alsactl/alsa-state.service.in
@@ -6,10 +6,7 @@
 [Unit]
 Description=Manage Sound Card State (restore and store)
 ConditionPathExists=@daemonswitch@
-DefaultDependencies=no
 After=sysinit.target
-Before=shutdown.target
-Conflicts=shutdown.target
 
 [Service]
 Type=simple
diff --git a/alsactl/alsa-store.service.in b/alsactl/alsa-store.service.in
deleted file mode 100644
index c89cfff04f35..000000000000
--- a/alsactl/alsa-store.service.in
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-# Note that two different ALSA card state management schemes exist and they
-# can be switched using a file exist check - /etc/alsa/state-daemon.conf .
-#
-
-[Unit]
-Description=Store Sound Card State
-ConditionPathExists=!@daemonswitch@
-ConditionPathExistsGlob=/dev/snd/control*
-DefaultDependencies=no
-Before=shutdown.target
-
-[Service]
-Type=oneshot
-ExecStart=@sbindir@/alsactl store
-StandardOutput=syslog
-- 
2.5.3


Reply via email to