Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package alsa for openSUSE:Factory checked in 
at 2022-10-27 13:53:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/alsa (Old)
 and      /work/SRC/openSUSE:Factory/.alsa.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "alsa"

Thu Oct 27 13:53:29 2022 rev:218 rq:1031067 version:1.2.8

Changes:
--------
--- /work/SRC/openSUSE:Factory/alsa/alsa.changes        2022-07-21 
11:33:19.974944936 +0200
+++ /work/SRC/openSUSE:Factory/.alsa.new.2275/alsa.changes      2022-10-27 
13:53:49.948463487 +0200
@@ -1,0 +2,9 @@
+Tue Oct 25 07:19:06 UTC 2022 - Takashi Iwai <ti...@suse.com>
+
+- Update to version 1.2.8:
+  add FreeBSD/NetBD/OpenBSD build support, fixes in control namehint,
+  various PCM plugins and UCM.  For details, see:
+    https://www.alsa-project.org/wiki/Changes_v1.2.7.2_v1.2.8
+- Add keyring
+
+-------------------------------------------------------------------

Old:
----
  alsa-lib-1.2.7.2.tar.bz2
  alsa-lib-1.2.7.2.tar.bz2.sig

New:
----
  alsa-lib-1.2.8.tar.bz2
  alsa-lib-1.2.8.tar.bz2.sig
  alsa.keyring

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

Other differences:
------------------
++++++ alsa.spec ++++++
--- /var/tmp/diff_new_pack.PpwfCW/_old  2022-10-27 13:53:50.840468037 +0200
+++ /var/tmp/diff_new_pack.PpwfCW/_new  2022-10-27 13:53:50.844468057 +0200
@@ -32,7 +32,7 @@
 %endif
 
 Name:           alsa
-Version:        1.2.7.2
+Version:        1.2.8
 Release:        0
 Summary:        Advanced Linux Sound Architecture
 License:        LGPL-2.1-or-later
@@ -53,6 +53,8 @@
 Source31:       all_notes_off.bin
 Source32:       all_notes_off.mid
 Source34:       alsa-init.sh
+# from https://www.alsa-project.org/files/pub/gpg-release-key-v1.txt
+Source35:       alsa.keyring
 # rest suse fixes
 Patch101:       alsa-lib-ignore-non-accessible-ALSA_CONFIG_PATH.patch
 BuildRequires:  doxygen



++++++ alsa-lib-1.2.7.2.tar.bz2 -> alsa-lib-1.2.8.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/configure 
new/alsa-lib-1.2.8/configure
--- old/alsa-lib-1.2.7.2/configure      2022-07-08 17:36:02.000000000 +0200
+++ new/alsa-lib-1.2.8/configure        2022-10-24 10:19:19.000000000 +0200
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for alsa-lib 1.2.7.2.
+# Generated by GNU Autoconf 2.69 for alsa-lib 1.2.8.
 #
 #
 # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -587,8 +587,8 @@
 # Identity of this package.
 PACKAGE_NAME='alsa-lib'
 PACKAGE_TARNAME='alsa-lib'
-PACKAGE_VERSION='1.2.7.2'
-PACKAGE_STRING='alsa-lib 1.2.7.2'
+PACKAGE_VERSION='1.2.8'
+PACKAGE_STRING='alsa-lib 1.2.8'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -1471,7 +1471,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures alsa-lib 1.2.7.2 to adapt to many kinds of systems.
+\`configure' configures alsa-lib 1.2.8 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1542,7 +1542,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of alsa-lib 1.2.7.2:";;
+     short | recursive ) echo "Configuration of alsa-lib 1.2.8:";;
    esac
   cat <<\_ACEOF
 
@@ -1704,7 +1704,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-alsa-lib configure 1.2.7.2
+alsa-lib configure 1.2.8
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2115,7 +2115,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by alsa-lib $as_me 1.2.7.2, which was
+It was created by alsa-lib $as_me 1.2.8, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3053,7 +3053,7 @@
 
 # Define the identity of the package.
  PACKAGE='alsa-lib'
- VERSION='1.2.7.2'
+ VERSION='1.2.8'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -13316,7 +13316,7 @@
 $as_echo "no" >&6; }
 fi
 
-for ac_header in endian.h sys/endian.h sys/shm.h
+for ac_header in endian.h sys/endian.h sys/shm.h malloc.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" 
"$ac_includes_default"
@@ -14978,7 +14978,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by alsa-lib $as_me 1.2.7.2, which was
+This file was extended by alsa-lib $as_me 1.2.8, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -15044,7 +15044,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-alsa-lib config.status 1.2.7.2
+alsa-lib config.status 1.2.8
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -16769,8 +16769,9 @@
 
 echo "Creating asoundlib.h..."
 cp "$srcdir"/include/asoundlib-head.h include/asoundlib.h
+if test "$ac_cv_header_sys_endian_h" != "yes"; then
 test "$ac_cv_header_endian_h" = "yes" && echo "#include <endian.h>" >> 
include/asoundlib.h
-if test "$ac_cv_header_sys_endian_h" = "yes"; then
+else
 cat >> include/asoundlib.h <<EOF
 #include <sys/endian.h>
 #ifndef __BYTE_ORDER
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/configure.ac 
new/alsa-lib-1.2.8/configure.ac
--- old/alsa-lib-1.2.7.2/configure.ac   2022-07-08 17:34:30.000000000 +0200
+++ new/alsa-lib-1.2.8/configure.ac     2022-10-24 10:17:27.000000000 +0200
@@ -1,6 +1,6 @@
 dnl Process this file with autoconf to produce a configure script.
 AC_PREREQ(2.59)
-AC_INIT(alsa-lib, 1.2.7.2)
+AC_INIT(alsa-lib, 1.2.8)
 
 AC_CONFIG_SRCDIR([src/control/control.c])
 AC_CONFIG_MACRO_DIR([m4])
@@ -335,7 +335,7 @@
 fi
 
 dnl Check for headers
-AC_CHECK_HEADERS([endian.h sys/endian.h sys/shm.h])
+AC_CHECK_HEADERS([endian.h sys/endian.h sys/shm.h malloc.h])
 
 dnl Check for resmgr support...
 AC_MSG_CHECKING(for resmgr support)
@@ -764,8 +764,9 @@
 dnl Create asoundlib.h dynamically according to configure options
 echo "Creating asoundlib.h..."
 cp "$srcdir"/include/asoundlib-head.h include/asoundlib.h
+if test "$ac_cv_header_sys_endian_h" != "yes"; then
 test "$ac_cv_header_endian_h" = "yes" && echo "#include <endian.h>" >> 
include/asoundlib.h
-if test "$ac_cv_header_sys_endian_h" = "yes"; then
+else
 cat >> include/asoundlib.h <<EOF
 #include <sys/endian.h>
 #ifndef __BYTE_ORDER
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/doc/pictures/Makefile.am 
new/alsa-lib-1.2.8/doc/pictures/Makefile.am
--- old/alsa-lib-1.2.7.2/doc/pictures/Makefile.am       2022-07-08 
17:34:30.000000000 +0200
+++ new/alsa-lib-1.2.8/doc/pictures/Makefile.am 2022-10-24 10:17:27.000000000 
+0200
@@ -1 +1,9 @@
-EXTRA_DIST=wave1.gif wave2.gif
+GIT_FILES=$(wildcard *.gif)
+PUML_FILES=$(wildcard *.puml)
+SVG_FILES=$(PUML_FILES:.puml=.svg)
+EXTRA_DIST=$(GIT_FILES) $(PUML_FILES) $(SVG_FILES)
+
+all: $(SVG_FILES)
+
+.puml.svg:
+       plantuml -tsvg $<
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/doc/pictures/Makefile.in 
new/alsa-lib-1.2.8/doc/pictures/Makefile.in
--- old/alsa-lib-1.2.7.2/doc/pictures/Makefile.in       2022-07-08 
17:36:01.000000000 +0200
+++ new/alsa-lib-1.2.8/doc/pictures/Makefile.in 2022-10-24 10:19:18.000000000 
+0200
@@ -254,10 +254,14 @@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-EXTRA_DIST = wave1.gif wave2.gif
+GIT_FILES = $(wildcard *.gif)
+PUML_FILES = $(wildcard *.puml)
+SVG_FILES = $(PUML_FILES:.puml=.svg)
+EXTRA_DIST = $(GIT_FILES) $(PUML_FILES) $(SVG_FILES)
 all: all-am
 
 .SUFFIXES:
+.SUFFIXES: .puml .svg
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  
$(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
@@ -450,6 +454,11 @@
 .PRECIOUS: Makefile
 
 
+all: $(SVG_FILES)
+
+.puml.svg:
+       plantuml -tsvg $<
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/doc/pictures/ucm-seq-boot.puml 
new/alsa-lib-1.2.8/doc/pictures/ucm-seq-boot.puml
--- old/alsa-lib-1.2.7.2/doc/pictures/ucm-seq-boot.puml 1970-01-01 
01:00:00.000000000 +0100
+++ new/alsa-lib-1.2.8/doc/pictures/ucm-seq-boot.puml   2022-10-24 
10:17:27.000000000 +0200
@@ -0,0 +1,17 @@
+@startuml
+title "UCM sequence boot order (using udev and alsactl)"
+
+start
+:Sound card detected (udev);
+:UCM: FixedBootSequence;
+if (Card state (/var/lib/alsa/asound.state)) then (not present)
+  :UCM: BootSequence;
+else (present)
+  :alsactl: Restore state (from asound.state);
+endif
+:Standard sound card use (with or without UCM);
+:Save sound card state (asound.state);
+:Sound card detached;
+stop
+
+@enduml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/doc/pictures/ucm-seq-boot.svg 
new/alsa-lib-1.2.8/doc/pictures/ucm-seq-boot.svg
--- old/alsa-lib-1.2.7.2/doc/pictures/ucm-seq-boot.svg  1970-01-01 
01:00:00.000000000 +0100
+++ new/alsa-lib-1.2.8/doc/pictures/ucm-seq-boot.svg    2022-10-24 
10:17:27.000000000 +0200
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg 
xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; 
contentStyleType="text/css" height="508px" preserveAspectRatio="none" 
style="width:500px;height:508px;background:#FFFFFF;" version="1.1" viewBox="0 0 
500 508" width="500px" zoomAndPan="magnify"><defs/><g><rect height="26.2969" 
style="stroke:#00000000;stroke-width:1.0;fill:none;" width="411" x="43" 
y="15"/><text fill="#000000" font-family="sans-serif" font-size="14" 
font-weight="bold" lengthAdjust="spacing" textLength="401" x="48" 
y="32.9951">UCM sequence boot order (using udev and alsactl)</text><ellipse 
cx="215.5" cy="57.2969" fill="#222222" rx="10" ry="10" 
style="stroke:#222222;stroke-width:1.0;"/><rect fill="#F1F1F1" height="33.9688" 
rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="197" 
x="117" y="87.2969"/><text fill="#000000" font-family="sans-serif" 
font-size="12" lengthAdjust="spacing" textLength="177" x="127" y="108.4355"
 >Sound card detected (udev)</text><rect fill="#F1F1F1" height="33.9688" 
 >rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="179" 
 >x="126" y="141.2656"/><text fill="#000000" font-family="sans-serif" 
 >font-size="12" lengthAdjust="spacing" textLength="159" x="136" 
 >y="162.4043">UCM: FixedBootSequence</text><polygon fill="#F1F1F1" 
 >points="106.5,195.2344,324.5,195.2344,336.5,207.2344,324.5,219.2344,106.5,219.2344,94.5,207.2344,106.5,195.2344"
 > style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" 
 >font-family="sans-serif" font-size="11" lengthAdjust="spacing" 
 >textLength="218" x="106.5" y="211.0425">Card state 
 >(/var/lib/alsa/asound.state)</text><text fill="#000000" 
 >font-family="sans-serif" font-size="11" lengthAdjust="spacing" 
 >textLength="66" x="28.5" y="204.6401">not present</text><text fill="#000000" 
 >font-family="sans-serif" font-size="11" lengthAdjust="spacing" 
 >textLength="44" x="336.5" y="204.6401">present</text><rect fill="#F1F1F1" 
 >height="33.9688" rx="12.5" ry="1
 2.5" style="stroke:#181818;stroke-width:0.5;" width="147" x="11" 
y="229.2344"/><text fill="#000000" font-family="sans-serif" font-size="12" 
lengthAdjust="spacing" textLength="127" x="21" y="250.373">UCM: 
BootSequence</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" 
style="stroke:#181818;stroke-width:0.5;" width="285" x="204" 
y="229.2344"/><text fill="#000000" font-family="sans-serif" font-size="12" 
lengthAdjust="spacing" textLength="265" x="214" y="250.373">alsactl: Restore 
state (from asound.state)</text><polygon fill="#F1F1F1" 
points="215.5,269.2031,227.5,281.2031,215.5,293.2031,203.5,281.2031,215.5,269.2031"
 style="stroke:#181818;stroke-width:0.5;"/><rect fill="#F1F1F1" 
height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" 
width="317" x="57" y="313.2031"/><text fill="#000000" font-family="sans-serif" 
font-size="12" lengthAdjust="spacing" textLength="297" x="67" 
y="334.3418">Standard sound card use (with or without UCM)</text><rect 
fill="#F1F
 1F1" height="33.9688" rx="12.5" ry="12.5" 
style="stroke:#181818;stroke-width:0.5;" width="260" x="85.5" 
y="367.1719"/><text fill="#000000" font-family="sans-serif" font-size="12" 
lengthAdjust="spacing" textLength="240" x="95.5" y="388.3105">Save sound card 
state (asound.state)</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" 
ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="156" x="137.5" 
y="421.1406"/><text fill="#000000" font-family="sans-serif" font-size="12" 
lengthAdjust="spacing" textLength="136" x="147.5" y="442.2793">Sound card 
detached</text><ellipse cx="215.5" cy="486.1094" rx="11" ry="11" 
style="stroke:#222222;stroke-width:1.0;fill:none;"/><ellipse cx="215.5" 
cy="486.1094" fill="#222222" rx="6" ry="6" 
style="stroke:#111111;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="215.5" x2="215.5" y1="67.2969" 
y2="87.2969"/><polygon fill="#181818" 
points="211.5,77.2969,215.5,87.2969,219.5,77.2969,215.5,81.2969" 
style="stroke:#181818;stroke-width:1
 .0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="215.5" x2="215.5" 
y1="121.2656" y2="141.2656"/><polygon fill="#181818" 
points="211.5,131.2656,215.5,141.2656,219.5,131.2656,215.5,135.2656" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="94.5" x2="84.5" y1="207.2344" 
y2="207.2344"/><line style="stroke:#181818;stroke-width:1.0;" x1="84.5" 
x2="84.5" y1="207.2344" y2="229.2344"/><polygon fill="#181818" 
points="80.5,219.2344,84.5,229.2344,88.5,219.2344,84.5,223.2344" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="336.5" x2="346.5" y1="207.2344" 
y2="207.2344"/><line style="stroke:#181818;stroke-width:1.0;" x1="346.5" 
x2="346.5" y1="207.2344" y2="229.2344"/><polygon fill="#181818" 
points="342.5,219.2344,346.5,229.2344,350.5,219.2344,346.5,223.2344" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="84.5" x2="84.5" y1="263.2031" 
y2="281.2031"/><line st
 yle="stroke:#181818;stroke-width:1.0;" x1="84.5" x2="203.5" y1="281.2031" 
y2="281.2031"/><polygon fill="#181818" 
points="193.5,277.2031,203.5,281.2031,193.5,285.2031,197.5,281.2031" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="346.5" x2="346.5" y1="263.2031" 
y2="281.2031"/><line style="stroke:#181818;stroke-width:1.0;" x1="346.5" 
x2="227.5" y1="281.2031" y2="281.2031"/><polygon fill="#181818" 
points="237.5,277.2031,227.5,281.2031,237.5,285.2031,233.5,281.2031" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="215.5" x2="215.5" y1="175.2344" 
y2="195.2344"/><polygon fill="#181818" 
points="211.5,185.2344,215.5,195.2344,219.5,185.2344,215.5,189.2344" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="215.5" x2="215.5" y1="293.2031" 
y2="313.2031"/><polygon fill="#181818" 
points="211.5,303.2031,215.5,313.2031,219.5,303.2031,215.5,307.2031" 
style="stroke:#181
 818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" 
x1="215.5" x2="215.5" y1="347.1719" y2="367.1719"/><polygon fill="#181818" 
points="211.5,357.1719,215.5,367.1719,219.5,357.1719,215.5,361.1719" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="215.5" x2="215.5" y1="401.1406" 
y2="421.1406"/><polygon fill="#181818" 
points="211.5,411.1406,215.5,421.1406,219.5,411.1406,215.5,415.1406" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="215.5" x2="215.5" y1="455.1094" 
y2="475.1094"/><polygon fill="#181818" 
points="211.5,465.1094,215.5,475.1094,219.5,465.1094,215.5,469.1094" 
style="stroke:#181818;stroke-width:1.0;"/><!--MD5=[e09ca9f4b18fe6c64001e568b14569ed]
+@startuml
+title "UCM sequence boot order (using udev and alsactl)"
+
+start
+:Sound card detected (udev);
+:UCM: FixedBootSequence;
+if (Card state (/var/lib/alsa/asound.state)) then (not present)
+  :UCM: BootSequence;
+else (present)
+  :alsactl: Restore state (from asound.state);
+endif
+:Standard sound card use (with or without UCM);
+:Save sound card state (asound.state);
+:Sound card detached;
+stop
+
+@enduml
+
+PlantUML version 1.2022.5(Sat Apr 30 12:55:52 CEST 2022)
+(LGPL source distribution)
+Java Runtime: OpenJDK Runtime Environment
+JVM: OpenJDK 64-Bit Server VM
+Default Encoding: UTF-8
+Language: cs
+Country: CZ
+--></g></svg>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/doc/pictures/ucm-seq-device.puml 
new/alsa-lib-1.2.8/doc/pictures/ucm-seq-device.puml
--- old/alsa-lib-1.2.7.2/doc/pictures/ucm-seq-device.puml       1970-01-01 
01:00:00.000000000 +0100
+++ new/alsa-lib-1.2.8/doc/pictures/ucm-seq-device.puml 2022-10-24 
10:17:27.000000000 +0200
@@ -0,0 +1,26 @@
+@startuml
+title "UCM device sequence graph"
+
+start
+split
+  :Enable device;
+  :EnableSequence;
+  :Use device;
+  :Disable device;
+  :DisableSequence;
+split again
+  :Switch device;
+  :Disable old device;
+  if (TransitionSequence) then (present)
+    :TransitionSequence;
+    :Enable new device;
+  else (not present)
+    :Disable old device;
+    :DisableSequence;
+    :Enable new device;
+    :EnableSequence;
+  endif
+end split
+stop
+
+@enduml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/doc/pictures/ucm-seq-device.svg 
new/alsa-lib-1.2.8/doc/pictures/ucm-seq-device.svg
--- old/alsa-lib-1.2.7.2/doc/pictures/ucm-seq-device.svg        1970-01-01 
01:00:00.000000000 +0100
+++ new/alsa-lib-1.2.8/doc/pictures/ucm-seq-device.svg  2022-10-24 
10:17:27.000000000 +0200
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg 
xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; 
contentStyleType="text/css" height="598px" preserveAspectRatio="none" 
style="width:462px;height:598px;background:#FFFFFF;" version="1.1" viewBox="0 0 
462 598" width="462px" zoomAndPan="magnify"><defs/><g><rect height="26.2969" 
style="stroke:#00000000;stroke-width:1.0;fill:none;" width="236" x="111.5" 
y="15"/><text fill="#000000" font-family="sans-serif" font-size="14" 
font-weight="bold" lengthAdjust="spacing" textLength="226" x="116.5" 
y="32.9951">UCM device sequence graph</text><ellipse cx="222" cy="57.2969" 
fill="#222222" rx="10" ry="10" style="stroke:#222222;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.5;" x1="75.5" x2="302.75" y1="87.2969" 
y2="87.2969"/><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" 
style="stroke:#181818;stroke-width:0.5;" width="107" x="22" y="161.2656"/><text 
fill="#000000" font-family="sans-serif
 " font-size="12" lengthAdjust="spacing" textLength="87" x="32" 
y="182.4043">Enable device</text><rect fill="#F1F1F1" height="33.9688" 
rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="126" 
x="12.5" y="217.7188"/><text fill="#000000" font-family="sans-serif" 
font-size="12" lengthAdjust="spacing" textLength="106" x="22.5" 
y="238.8574">EnableSequence</text><rect fill="#F1F1F1" height="33.9688" 
rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="88" 
x="31.5" y="286.6875"/><text fill="#000000" font-family="sans-serif" 
font-size="12" lengthAdjust="spacing" textLength="68" x="41.5" y="307.8262">Use 
device</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" 
style="stroke:#181818;stroke-width:0.5;" width="110" x="20.5" 
y="355.6563"/><text fill="#000000" font-family="sans-serif" font-size="12" 
lengthAdjust="spacing" textLength="90" x="30.5" y="376.7949">Disable 
device</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" 
style="stroke:#1
 81818;stroke-width:0.5;" width="129" x="11" y="424.625"/><text fill="#000000" 
font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="109" 
x="21" y="445.7637">DisableSequence</text><rect fill="#F1F1F1" height="33.9688" 
rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="104" 
x="250.75" y="107.2969"/><text fill="#000000" font-family="sans-serif" 
font-size="12" lengthAdjust="spacing" textLength="84" x="260.75" 
y="128.4355">Switch device</text><rect fill="#F1F1F1" height="33.9688" 
rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="133" 
x="236.25" y="163.75"/><text fill="#000000" font-family="sans-serif" 
font-size="12" lengthAdjust="spacing" textLength="113" x="246.25" 
y="184.8887">Disable old device</text><polygon fill="#F1F1F1" 
points="246.25,220.2031,359.25,220.2031,371.25,232.2031,359.25,244.2031,246.25,244.2031,234.25,232.2031,246.25,220.2031"
 style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" 
font-family="sans-serif" 
 font-size="11" lengthAdjust="spacing" textLength="113" x="246.25" 
y="236.0112">TransitionSequence</text><text fill="#000000" 
font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="44" 
x="190.25" y="229.6089">present</text><text fill="#000000" 
font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="66" 
x="371.25" y="229.6089">not present</text><rect fill="#F1F1F1" height="33.9688" 
rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="145" 
x="150" y="254.2031"/><text fill="#000000" font-family="sans-serif" 
font-size="12" lengthAdjust="spacing" textLength="125" x="160" 
y="275.3418">TransitionSequence</text><rect fill="#F1F1F1" height="33.9688" 
rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="136" 
x="154.5" y="323.1719"/><text fill="#000000" font-family="sans-serif" 
font-size="12" lengthAdjust="spacing" textLength="116" x="164.5" 
y="344.3105">Enable new device</text><rect fill="#F1F1F1" height="33.9688" 
rx="12.5" ry
 ="12.5" style="stroke:#181818;stroke-width:0.5;" width="133" x="316.5" 
y="254.2031"/><text fill="#000000" font-family="sans-serif" font-size="12" 
lengthAdjust="spacing" textLength="113" x="326.5" y="275.3418">Disable old 
device</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" 
style="stroke:#181818;stroke-width:0.5;" width="129" x="318.5" 
y="323.1719"/><text fill="#000000" font-family="sans-serif" font-size="12" 
lengthAdjust="spacing" textLength="109" x="328.5" 
y="344.3105">DisableSequence</text><rect fill="#F1F1F1" height="33.9688" 
rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="136" 
x="315" y="392.1406"/><text fill="#000000" font-family="sans-serif" 
font-size="12" lengthAdjust="spacing" textLength="116" x="325" 
y="413.2793">Enable new device</text><rect fill="#F1F1F1" height="33.9688" 
rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="126" 
x="320" y="461.1094"/><text fill="#000000" font-family="sans-serif" 
font-size="12" lengthAdj
 ust="spacing" textLength="106" x="330" 
y="482.248">EnableSequence</text><polygon fill="#F1F1F1" 
points="302.75,501.0781,314.75,513.0781,302.75,525.0781,290.75,513.0781,302.75,501.0781"
 style="stroke:#181818;stroke-width:0.5;"/><line 
style="stroke:#181818;stroke-width:1.5;" x1="75.5" x2="302.75" y1="545.0781" 
y2="545.0781"/><ellipse cx="222" cy="576.0781" rx="11" ry="11" 
style="stroke:#222222;stroke-width:1.0;fill:none;"/><ellipse cx="222" 
cy="576.0781" fill="#222222" rx="6" ry="6" 
style="stroke:#111111;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="75.5" x2="75.5" y1="195.2344" 
y2="217.7188"/><polygon fill="#181818" 
points="71.5,207.7188,75.5,217.7188,79.5,207.7188,75.5,211.7188" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="75.5" x2="75.5" y1="251.6875" 
y2="286.6875"/><polygon fill="#181818" 
points="71.5,276.6875,75.5,286.6875,79.5,276.6875,75.5,280.6875" 
style="stroke:#181818;stroke-width:1.0;"/><line style="st
 roke:#181818;stroke-width:1.0;" x1="75.5" x2="75.5" y1="320.6563" 
y2="355.6563"/><polygon fill="#181818" 
points="71.5,345.6563,75.5,355.6563,79.5,345.6563,75.5,349.6563" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="75.5" x2="75.5" y1="389.625" 
y2="424.625"/><polygon fill="#181818" 
points="71.5,414.625,75.5,424.625,79.5,414.625,75.5,418.625" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="302.75" x2="302.75" y1="141.2656" 
y2="163.75"/><polygon fill="#181818" 
points="298.75,153.75,302.75,163.75,306.75,153.75,302.75,157.75" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="222.5" x2="222.5" y1="288.1719" 
y2="323.1719"/><polygon fill="#181818" 
points="218.5,313.1719,222.5,323.1719,226.5,313.1719,222.5,317.1719" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="383" x2="383" y1="288.1719" 
y2="323.1719"/><polygon
  fill="#181818" points="379,313.1719,383,323.1719,387,313.1719,383,317.1719" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="383" x2="383" y1="357.1406" 
y2="392.1406"/><polygon fill="#181818" 
points="379,382.1406,383,392.1406,387,382.1406,383,386.1406" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="383" x2="383" y1="426.1094" 
y2="461.1094"/><polygon fill="#181818" 
points="379,451.1094,383,461.1094,387,451.1094,383,455.1094" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="234.25" x2="222.5" y1="232.2031" 
y2="232.2031"/><line style="stroke:#181818;stroke-width:1.0;" x1="222.5" 
x2="222.5" y1="232.2031" y2="254.2031"/><polygon fill="#181818" 
points="218.5,244.2031,222.5,254.2031,226.5,244.2031,222.5,248.2031" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="371.25" x2="383" y1="232.2031" 
y2="232.2031"/><line s
 tyle="stroke:#181818;stroke-width:1.0;" x1="383" x2="383" y1="232.2031" 
y2="254.2031"/><polygon fill="#181818" 
points="379,244.2031,383,254.2031,387,244.2031,383,248.2031" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="222.5" x2="222.5" y1="357.1406" 
y2="513.0781"/><line style="stroke:#181818;stroke-width:1.0;" x1="222.5" 
x2="290.75" y1="513.0781" y2="513.0781"/><polygon fill="#181818" 
points="280.75,509.0781,290.75,513.0781,280.75,517.0781,284.75,513.0781" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="383" x2="383" y1="495.0781" 
y2="513.0781"/><line style="stroke:#181818;stroke-width:1.0;" x1="383" 
x2="314.75" y1="513.0781" y2="513.0781"/><polygon fill="#181818" 
points="324.75,509.0781,314.75,513.0781,324.75,517.0781,320.75,513.0781" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="302.75" x2="302.75" y1="197.7188" 
y2="220.2031"/><polygon fill="#1
 81818" 
points="298.75,210.2031,302.75,220.2031,306.75,210.2031,302.75,214.2031" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="75.5" x2="75.5" y1="88.7969" 
y2="161.2656"/><polygon fill="#181818" 
points="71.5,151.2656,75.5,161.2656,79.5,151.2656,75.5,155.2656" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="302.75" x2="302.75" y1="88.7969" 
y2="107.2969"/><polygon fill="#181818" 
points="298.75,97.2969,302.75,107.2969,306.75,97.2969,302.75,101.2969" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="75.5" x2="75.5" y1="458.5938" 
y2="545.0781"/><polygon fill="#181818" 
points="71.5,535.0781,75.5,545.0781,79.5,535.0781,75.5,539.0781" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="302.75" x2="302.75" y1="525.0781" 
y2="545.0781"/><polygon fill="#181818" 
points="298.75,535.0781,302.75,545.0781,306.75,535.0781,302.75
 ,539.0781" style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="222" x2="222" y1="67.2969" 
y2="87.2969"/><polygon fill="#181818" 
points="218,77.2969,222,87.2969,226,77.2969,222,81.2969" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="222" x2="222" y1="546.5781" 
y2="565.0781"/><polygon fill="#181818" 
points="218,555.0781,222,565.0781,226,555.0781,222,559.0781" 
style="stroke:#181818;stroke-width:1.0;"/><!--MD5=[9943065c368326033cbbfb71ee762752]
+@startuml
+title "UCM device sequence graph"
+
+start
+split
+  :Enable device;
+  :EnableSequence;
+  :Use device;
+  :Disable device;
+  :DisableSequence;
+split again
+  :Switch device;
+  :Disable old device;
+  if (TransitionSequence) then (present)
+    :TransitionSequence;
+    :Enable new device;
+  else (not present)
+    :Disable old device;
+    :DisableSequence;
+    :Enable new device;
+    :EnableSequence;
+  endif
+end split
+stop
+
+@enduml
+
+PlantUML version 1.2022.5(Sat Apr 30 12:55:52 CEST 2022)
+(LGPL source distribution)
+Java Runtime: OpenJDK Runtime Environment
+JVM: OpenJDK 64-Bit Server VM
+Default Encoding: UTF-8
+Language: cs
+Country: CZ
+--></g></svg>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/doc/pictures/ucm-seq-verb.puml 
new/alsa-lib-1.2.8/doc/pictures/ucm-seq-verb.puml
--- old/alsa-lib-1.2.7.2/doc/pictures/ucm-seq-verb.puml 1970-01-01 
01:00:00.000000000 +0100
+++ new/alsa-lib-1.2.8/doc/pictures/ucm-seq-verb.puml   2022-10-24 
10:17:27.000000000 +0200
@@ -0,0 +1,30 @@
+@startuml
+title "UCM verb sequence graph"
+
+
+start
+split
+  :Enable verb;
+  :SectionDefaults sequence;
+  :EnableSequence;
+
+  :Enable, use and disable verb devices;
+
+  :Disable verb;
+  :DisableSequence;
+split again
+  :Switch verb;
+  :Disable old verb;
+  if (TransitionSequence) then (present)
+    :TransitionSequence;
+    :Enable new verb;
+  else (not present)
+    :Disable old verb;
+    :DisableSequence;
+    :Enable new verb;
+    :EnableSequence;
+  endif
+end split
+stop
+
+@enduml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/doc/pictures/ucm-seq-verb.svg 
new/alsa-lib-1.2.8/doc/pictures/ucm-seq-verb.svg
--- old/alsa-lib-1.2.7.2/doc/pictures/ucm-seq-verb.svg  1970-01-01 
01:00:00.000000000 +0100
+++ new/alsa-lib-1.2.8/doc/pictures/ucm-seq-verb.svg    2022-10-24 
10:17:27.000000000 +0200
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg 
xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; 
contentStyleType="text/css" height="584px" preserveAspectRatio="none" 
style="width:583px;height:584px;background:#FFFFFF;" version="1.1" viewBox="0 0 
583 584" width="583px" zoomAndPan="magnify"><defs/><g><rect height="26.2969" 
style="stroke:#00000000;stroke-width:1.0;fill:none;" width="220" x="180.25" 
y="15"/><text fill="#000000" font-family="sans-serif" font-size="14" 
font-weight="bold" lengthAdjust="spacing" textLength="210" x="185.25" 
y="32.9951">UCM verb sequence graph</text><ellipse cx="285" cy="57.2969" 
fill="#222222" rx="10" ry="10" style="stroke:#222222;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.5;" x1="137.5" x2="429.5" y1="87.2969" 
y2="87.2969"/><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" 
style="stroke:#181818;stroke-width:0.5;" width="94" x="90.5" 
y="139.2969"/><text fill="#000000" font-family="sans-seri
 f" font-size="12" lengthAdjust="spacing" textLength="74" x="100.5" 
y="160.4355">Enable verb</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" 
ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="185" x="45" 
y="208.2656"/><text fill="#000000" font-family="sans-serif" font-size="12" 
lengthAdjust="spacing" textLength="165" x="55" y="229.4043">SectionDefaults 
sequence</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" 
style="stroke:#181818;stroke-width:0.5;" width="126" x="74.5" 
y="277.2344"/><text fill="#000000" font-family="sans-serif" font-size="12" 
lengthAdjust="spacing" textLength="106" x="84.5" 
y="298.373">EnableSequence</text><rect fill="#F1F1F1" height="33.9688" 
rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="253" x="11" 
y="333.2031"/><text fill="#000000" font-family="sans-serif" font-size="12" 
lengthAdjust="spacing" textLength="233" x="21" y="354.3418">Enable, use and 
disable verb devices</text><rect fill="#F1F1F1" height="33.9688" rx="
 12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="97" x="89" 
y="389.1719"/><text fill="#000000" font-family="sans-serif" font-size="12" 
lengthAdjust="spacing" textLength="77" x="99" y="410.3105">Disable 
verb</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" 
style="stroke:#181818;stroke-width:0.5;" width="129" x="73" y="445.1406"/><text 
fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" 
textLength="109" x="83" y="466.2793">DisableSequence</text><rect fill="#F1F1F1" 
height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" 
width="91" x="384" y="107.2969"/><text fill="#000000" font-family="sans-serif" 
font-size="12" lengthAdjust="spacing" textLength="71" x="394" 
y="128.4355">Switch verb</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" 
ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="120" x="369.5" 
y="176.2656"/><text fill="#000000" font-family="sans-serif" font-size="12" 
lengthAdjust="spacing" text
 Length="100" x="379.5" y="197.4043">Disable old verb</text><polygon 
fill="#F1F1F1" 
points="373,245.2344,486,245.2344,498,257.2344,486,269.2344,373,269.2344,361,257.2344,373,245.2344"
 style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" 
font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="113" 
x="373" y="261.0425">TransitionSequence</text><text fill="#000000" 
font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="44" 
x="317" y="254.6401">present</text><text fill="#000000" 
font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="66" 
x="498" y="254.6401">not present</text><rect fill="#F1F1F1" height="33.9688" 
rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="145" 
x="278.5" y="279.2344"/><text fill="#000000" font-family="sans-serif" 
font-size="12" lengthAdjust="spacing" textLength="125" x="288.5" 
y="300.373">TransitionSequence</text><rect fill="#F1F1F1" height="33.9688" 
rx="12.5" ry="12.5" style="str
 oke:#181818;stroke-width:0.5;" width="123" x="289.5" y="335.2031"/><text 
fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" 
textLength="103" x="299.5" y="356.3418">Enable new verb</text><rect 
fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" 
style="stroke:#181818;stroke-width:0.5;" width="120" x="448" 
y="279.2344"/><text fill="#000000" font-family="sans-serif" font-size="12" 
lengthAdjust="spacing" textLength="100" x="458" y="300.373">Disable old 
verb</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" 
style="stroke:#181818;stroke-width:0.5;" width="129" x="443.5" 
y="335.2031"/><text fill="#000000" font-family="sans-serif" font-size="12" 
lengthAdjust="spacing" textLength="109" x="453.5" 
y="356.3418">DisableSequence</text><rect fill="#F1F1F1" height="33.9688" 
rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="123" 
x="446.5" y="391.1719"/><text fill="#000000" font-family="sans-serif" 
font-size="12" lengthAdjust="spacing" textLen
 gth="103" x="456.5" y="412.3105">Enable new verb</text><rect fill="#F1F1F1" 
height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" 
width="126" x="445" y="447.1406"/><text fill="#000000" font-family="sans-serif" 
font-size="12" lengthAdjust="spacing" textLength="106" x="455" 
y="468.2793">EnableSequence</text><polygon fill="#F1F1F1" 
points="429.5,487.1094,441.5,499.1094,429.5,511.1094,417.5,499.1094,429.5,487.1094"
 style="stroke:#181818;stroke-width:0.5;"/><line 
style="stroke:#181818;stroke-width:1.5;" x1="137.5" x2="429.5" y1="531.1094" 
y2="531.1094"/><ellipse cx="285" cy="562.1094" rx="11" ry="11" 
style="stroke:#222222;stroke-width:1.0;fill:none;"/><ellipse cx="285" 
cy="562.1094" fill="#222222" rx="6" ry="6" 
style="stroke:#111111;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="137.5" x2="137.5" y1="173.2656" 
y2="208.2656"/><polygon fill="#181818" 
points="133.5,198.2656,137.5,208.2656,141.5,198.2656,137.5,202.2656" 
style="stroke:#181818;st
 roke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="137.5" 
x2="137.5" y1="242.2344" y2="277.2344"/><polygon fill="#181818" 
points="133.5,267.2344,137.5,277.2344,141.5,267.2344,137.5,271.2344" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="137.5" x2="137.5" y1="311.2031" 
y2="333.2031"/><polygon fill="#181818" 
points="133.5,323.2031,137.5,333.2031,141.5,323.2031,137.5,327.2031" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="137.5" x2="137.5" y1="367.1719" 
y2="389.1719"/><polygon fill="#181818" 
points="133.5,379.1719,137.5,389.1719,141.5,379.1719,137.5,383.1719" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="137.5" x2="137.5" y1="423.1406" 
y2="445.1406"/><polygon fill="#181818" 
points="133.5,435.1406,137.5,445.1406,141.5,435.1406,137.5,439.1406" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" 
 x1="429.5" x2="429.5" y1="141.2656" y2="176.2656"/><polygon fill="#181818" 
points="425.5,166.2656,429.5,176.2656,433.5,166.2656,429.5,170.2656" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="351" x2="351" y1="313.2031" 
y2="335.2031"/><polygon fill="#181818" 
points="347,325.2031,351,335.2031,355,325.2031,351,329.2031" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="508" x2="508" y1="313.2031" 
y2="335.2031"/><polygon fill="#181818" 
points="504,325.2031,508,335.2031,512,325.2031,508,329.2031" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="508" x2="508" y1="369.1719" 
y2="391.1719"/><polygon fill="#181818" 
points="504,381.1719,508,391.1719,512,381.1719,508,385.1719" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="508" x2="508" y1="425.1406" 
y2="447.1406"/><polygon fill="#181818" points="504,437.1406,508,447.1
 406,512,437.1406,508,441.1406" style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="361" x2="351" y1="257.2344" 
y2="257.2344"/><line style="stroke:#181818;stroke-width:1.0;" x1="351" x2="351" 
y1="257.2344" y2="279.2344"/><polygon fill="#181818" 
points="347,269.2344,351,279.2344,355,269.2344,351,273.2344" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="498" x2="508" y1="257.2344" 
y2="257.2344"/><line style="stroke:#181818;stroke-width:1.0;" x1="508" x2="508" 
y1="257.2344" y2="279.2344"/><polygon fill="#181818" 
points="504,269.2344,508,279.2344,512,269.2344,508,273.2344" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="351" x2="351" y1="369.1719" 
y2="499.1094"/><line style="stroke:#181818;stroke-width:1.0;" x1="351" 
x2="417.5" y1="499.1094" y2="499.1094"/><polygon fill="#181818" 
points="407.5,495.1094,417.5,499.1094,407.5,503.1094,411.5,499.1094" style="stro
 ke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" 
x1="508" x2="508" y1="481.1094" y2="499.1094"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="508" x2="441.5" y1="499.1094" 
y2="499.1094"/><polygon fill="#181818" 
points="451.5,495.1094,441.5,499.1094,451.5,503.1094,447.5,499.1094" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="429.5" x2="429.5" y1="210.2344" 
y2="245.2344"/><polygon fill="#181818" 
points="425.5,235.2344,429.5,245.2344,433.5,235.2344,429.5,239.2344" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="137.5" x2="137.5" y1="88.7969" 
y2="139.2969"/><polygon fill="#181818" 
points="133.5,129.2969,137.5,139.2969,141.5,129.2969,137.5,133.2969" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="429.5" x2="429.5" y1="88.7969" 
y2="107.2969"/><polygon fill="#181818" 
points="425.5,97.2969,429.5,107.2969,433.5,97.2969,429.
 5,101.2969" style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="137.5" x2="137.5" y1="479.1094" 
y2="531.1094"/><polygon fill="#181818" 
points="133.5,521.1094,137.5,531.1094,141.5,521.1094,137.5,525.1094" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="429.5" x2="429.5" y1="511.1094" 
y2="531.1094"/><polygon fill="#181818" 
points="425.5,521.1094,429.5,531.1094,433.5,521.1094,429.5,525.1094" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="285" x2="285" y1="67.2969" 
y2="87.2969"/><polygon fill="#181818" 
points="281,77.2969,285,87.2969,289,77.2969,285,81.2969" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="285" x2="285" y1="532.6094" 
y2="551.1094"/><polygon fill="#181818" 
points="281,541.1094,285,551.1094,289,541.1094,285,545.1094" 
style="stroke:#181818;stroke-width:1.0;"/><!--MD5=[b20d35c68d0851020e52c93753caf6f4
 ]
+@startuml
+title "UCM verb sequence graph"
+
+
+start
+split
+  :Enable verb;
+  :SectionDefaults sequence;
+  :EnableSequence;
+
+  :Enable, use and disable verb devices;
+
+  :Disable verb;
+  :DisableSequence;
+split again
+  :Switch verb;
+  :Disable old verb;
+  if (TransitionSequence) then (present)
+    :TransitionSequence;
+    :Enable new verb;
+  else (not present)
+    :Disable old verb;
+    :DisableSequence;
+    :Enable new verb;
+    :EnableSequence;
+  endif
+end split
+stop
+
+@enduml
+
+PlantUML version 1.2022.5(Sat Apr 30 12:55:52 CEST 2022)
+(LGPL source distribution)
+Java Runtime: OpenJDK Runtime Environment
+JVM: OpenJDK 64-Bit Server VM
+Default Encoding: UTF-8
+Language: cs
+Country: CZ
+--></g></svg>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/doc/pictures/ucm-volume.puml 
new/alsa-lib-1.2.8/doc/pictures/ucm-volume.puml
--- old/alsa-lib-1.2.7.2/doc/pictures/ucm-volume.puml   1970-01-01 
01:00:00.000000000 +0100
+++ new/alsa-lib-1.2.8/doc/pictures/ucm-volume.puml     2022-10-24 
10:17:27.000000000 +0200
@@ -0,0 +1,19 @@
+@startuml
+title "UCM volume"
+
+start
+if (Card state (/var/lib/alsa/asound.state)) then (not present)
+  :UCM: BootSequence;
+else (present)
+  :alsactl: Restore state (from asound.state);
+endif
+:UCM application:set device volume;
+note right
+  The application uses (Playback|Capture)MixerElem or
+  (Playback/Capture)(Volume/Switch) values to get
+  the controls.
+end note
+:alsactl: Store state (to asound.state);
+stop
+
+@enduml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/doc/pictures/ucm-volume.svg 
new/alsa-lib-1.2.8/doc/pictures/ucm-volume.svg
--- old/alsa-lib-1.2.7.2/doc/pictures/ucm-volume.svg    1970-01-01 
01:00:00.000000000 +0100
+++ new/alsa-lib-1.2.8/doc/pictures/ucm-volume.svg      2022-10-24 
10:17:27.000000000 +0200
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg 
xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; 
contentStyleType="text/css" height="357px" preserveAspectRatio="none" 
style="width:724px;height:357px;background:#FFFFFF;" version="1.1" viewBox="0 0 
724 357" width="724px" zoomAndPan="magnify"><defs/><g><rect height="26.2969" 
style="stroke:#00000000;stroke-width:1.0;fill:none;" width="107" x="307.25" 
y="15"/><text fill="#000000" font-family="sans-serif" font-size="14" 
font-weight="bold" lengthAdjust="spacing" textLength="97" x="312.25" 
y="32.9951">UCM volume</text><ellipse cx="215.5" cy="57.2969" fill="#222222" 
rx="10" ry="10" style="stroke:#222222;stroke-width:1.0;"/><polygon 
fill="#F1F1F1" 
points="106.5,87.2969,324.5,87.2969,336.5,99.2969,324.5,111.2969,106.5,111.2969,94.5,99.2969,106.5,87.2969"
 style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" 
font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="218" 
x="106.5"
  y="103.105">Card state (/var/lib/alsa/asound.state)</text><text 
fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" 
textLength="66" x="28.5" y="96.7026">not present</text><text fill="#000000" 
font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="44" 
x="336.5" y="96.7026">present</text><rect fill="#F1F1F1" height="33.9688" 
rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="147" x="11" 
y="121.2969"/><text fill="#000000" font-family="sans-serif" font-size="12" 
lengthAdjust="spacing" textLength="127" x="21" y="142.4355">UCM: 
BootSequence</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" 
style="stroke:#181818;stroke-width:0.5;" width="285" x="204" 
y="121.2969"/><text fill="#000000" font-family="sans-serif" font-size="12" 
lengthAdjust="spacing" textLength="265" x="214" y="142.4355">alsactl: Restore 
state (from asound.state)</text><polygon fill="#F1F1F1" 
points="215.5,161.2656,227.5,173.2656,215.5,185.2656,203.5
 ,173.2656,215.5,161.2656" style="stroke:#181818;stroke-width:0.5;"/><path 
d="M353.5,195.2656 L353.5,218.9648 L333.5,222.9648 L353.5,226.9648 
L353.5,250.6641 A0,0 0 0 0 353.5,250.6641 L712.5,250.6641 A0,0 0 0 0 
712.5,250.6641 L712.5,205.2656 L702.5,195.2656 L353.5,195.2656 A0,0 0 0 0 
353.5,195.2656 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><path 
d="M702.5,195.2656 L702.5,205.2656 L712.5,205.2656 L702.5,195.2656 " 
fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" 
font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="338" 
x="359.5" y="212.3325">The application uses (Playback|Capture)MixerElem 
or</text><text fill="#000000" font-family="sans-serif" font-size="13" 
lengthAdjust="spacing" textLength="312" x="359.5" 
y="227.4653">(Playback/Capture)(Volume/Switch) values to get</text><text 
fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" 
textLength="80" x="359.5" y="242.5981">the controls.</text><rec
 t fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" 
style="stroke:#181818;stroke-width:0.5;" width="236" x="97.5" 
y="205.9805"/><text fill="#000000" font-family="sans-serif" font-size="12" 
lengthAdjust="spacing" textLength="216" x="107.5" y="227.1191">UCM 
application:set device volume</text><rect fill="#F1F1F1" height="33.9688" 
rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="255" x="88" 
y="270.6641"/><text fill="#000000" font-family="sans-serif" font-size="12" 
lengthAdjust="spacing" textLength="235" x="98" y="291.8027">alsactl: Store 
state (to asound.state)</text><ellipse cx="215.5" cy="335.6328" rx="11" ry="11" 
style="stroke:#222222;stroke-width:1.0;fill:none;"/><ellipse cx="215.5" 
cy="335.6328" fill="#222222" rx="6" ry="6" 
style="stroke:#111111;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="94.5" x2="84.5" y1="99.2969" 
y2="99.2969"/><line style="stroke:#181818;stroke-width:1.0;" x1="84.5" 
x2="84.5" y1="99.2969" y2="121.2969"/><polygon 
 fill="#181818" 
points="80.5,111.2969,84.5,121.2969,88.5,111.2969,84.5,115.2969" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="336.5" x2="346.5" y1="99.2969" 
y2="99.2969"/><line style="stroke:#181818;stroke-width:1.0;" x1="346.5" 
x2="346.5" y1="99.2969" y2="121.2969"/><polygon fill="#181818" 
points="342.5,111.2969,346.5,121.2969,350.5,111.2969,346.5,115.2969" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="84.5" x2="84.5" y1="155.2656" 
y2="173.2656"/><line style="stroke:#181818;stroke-width:1.0;" x1="84.5" 
x2="203.5" y1="173.2656" y2="173.2656"/><polygon fill="#181818" 
points="193.5,169.2656,203.5,173.2656,193.5,177.2656,197.5,173.2656" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="346.5" x2="346.5" y1="155.2656" 
y2="173.2656"/><line style="stroke:#181818;stroke-width:1.0;" x1="346.5" 
x2="227.5" y1="173.2656" y2="173.2656"/><polygon fill="#181818"
  points="237.5,169.2656,227.5,173.2656,237.5,177.2656,233.5,173.2656" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="215.5" x2="215.5" y1="67.2969" 
y2="87.2969"/><polygon fill="#181818" 
points="211.5,77.2969,215.5,87.2969,219.5,77.2969,215.5,81.2969" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="215.5" x2="215.5" y1="185.2656" 
y2="205.9805"/><polygon fill="#181818" 
points="211.5,195.9805,215.5,205.9805,219.5,195.9805,215.5,199.9805" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="215.5" x2="215.5" y1="239.9492" 
y2="270.6641"/><polygon fill="#181818" 
points="211.5,260.6641,215.5,270.6641,219.5,260.6641,215.5,264.6641" 
style="stroke:#181818;stroke-width:1.0;"/><line 
style="stroke:#181818;stroke-width:1.0;" x1="215.5" x2="215.5" y1="304.6328" 
y2="324.6328"/><polygon fill="#181818" 
points="211.5,314.6328,215.5,324.6328,219.5,314.6328,215.5,318.6328" s
 
tyle="stroke:#181818;stroke-width:1.0;"/><!--MD5=[3a7c61dd4ff8304ea95eeb2e154d1932]
+@startuml
+title "UCM volume"
+
+start
+if (Card state (/var/lib/alsa/asound.state)) then (not present)
+  :UCM: BootSequence;
+else (present)
+  :alsactl: Restore state (from asound.state);
+endif
+:UCM application:set device volume;
+note right
+  The application uses (Playback|Capture)MixerElem or
+  (Playback/Capture)(Volume/Switch) values to get
+  the controls.
+end note
+:alsactl: Store state (to asound.state);
+stop
+
+@enduml
+
+PlantUML version 1.2022.5(Sat Apr 30 12:55:52 CEST 2022)
+(LGPL source distribution)
+Java Runtime: OpenJDK Runtime Environment
+JVM: OpenJDK 64-Bit Server VM
+Default Encoding: UTF-8
+Language: cs
+Country: CZ
+--></g></svg>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/include/bswap.h 
new/alsa-lib-1.2.8/include/bswap.h
--- old/alsa-lib-1.2.7.2/include/bswap.h        2022-07-08 17:34:30.000000000 
+0200
+++ new/alsa-lib-1.2.8/include/bswap.h  2022-10-24 10:17:27.000000000 +0200
@@ -27,6 +27,11 @@
 #define bswap_16 bswap16
 #define bswap_32 bswap32
 #define bswap_64 bswap64
+#elif defined(__OpenBSD__)
+#include <sys/endian.h>
+#define bswap_16 swap16
+#define bswap_32 swap32
+#define bswap_64 swap64
 #elif defined (__sun)
 #include <sys/byteorder.h>
 #define bswap_16 BSWAP_16
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/include/config.h.in 
new/alsa-lib-1.2.8/include/config.h.in
--- old/alsa-lib-1.2.7.2/include/config.h.in    2022-07-08 17:36:00.000000000 
+0200
+++ new/alsa-lib-1.2.8/include/config.h.in      2022-10-24 10:19:17.000000000 
+0200
@@ -90,6 +90,9 @@
 /* Have librt */
 #undef HAVE_LIBRT
 
+/* Define to 1 if you have the <malloc.h> header file. */
+#undef HAVE_MALLOC_H
+
 /* Define to 1 if you have the <memory.h> header file. */
 #undef HAVE_MEMORY_H
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/include/local.h 
new/alsa-lib-1.2.8/include/local.h
--- old/alsa-lib-1.2.7.2/include/local.h        2022-07-08 17:34:30.000000000 
+0200
+++ new/alsa-lib-1.2.8/include/local.h  2022-10-24 10:17:27.000000000 +0200
@@ -34,6 +34,9 @@
 #include <endian.h>
 #elif defined(HAVE_SYS_ENDIAN_H)
 #include <sys/endian.h>
+#else
+#error Header defining endianness not defined
+#endif
 #ifndef __BYTE_ORDER
 #define __BYTE_ORDER BYTE_ORDER
 #endif
@@ -43,9 +46,6 @@
 #ifndef __BIG_ENDIAN
 #define __BIG_ENDIAN BIG_ENDIAN
 #endif
-#else
-#error Header defining endianness not defined
-#endif
 #include <stdarg.h>
 #include <poll.h>
 #include <sys/types.h>
@@ -85,6 +85,8 @@
 #define versionsort64 versionsort
 #define alphasort64 alphasort
 #define ino64_t ino_t
+#define fstat64 fstat
+#define stat64 stat
 #endif
 
 #define _snd_config_iterator list_head
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/include/sound/type_compat.h 
new/alsa-lib-1.2.8/include/sound/type_compat.h
--- old/alsa-lib-1.2.7.2/include/sound/type_compat.h    2022-07-08 
17:34:30.000000000 +0200
+++ new/alsa-lib-1.2.8/include/sound/type_compat.h      2022-10-24 
10:17:27.000000000 +0200
@@ -3,7 +3,7 @@
 
 #ifndef DOC_HIDDEN
 #include <stdint.h>
-#ifdef __linux__
+#if defined(__linux__)
 #include <linux/types.h>
 #else
 typedef uint8_t __u8;
@@ -15,8 +15,14 @@
 typedef int32_t __s32;
 typedef int64_t __s64;
 
-#include <endian.h>
-#include <byteswap.h>
+#if defined(__sun)
+#include <sys/byteorder.h>
+#define __cpu_to_le32 LE_32(x)
+#define __cpu_to_be32 BE_32(x)
+#define __cpu_to_le16 LE_16(x)
+#define __cpu_to_be16 BE_16(x)
+#else
+#include <sys/endian.h>
 #if __BYTE_ORDER == __LITTLE_ENDIAN
 #define __cpu_to_le32(x) (x)
 #define __cpu_to_be32(x) bswap_32(x)
@@ -28,20 +34,12 @@
 #define __cpu_to_le16(x) bswap_16(x)
 #define __cpu_to_be16(x) (x)
 #endif
+#endif
 
 #define __le32_to_cpu __cpu_to_le32
 #define __be32_to_cpu __cpu_to_be32
 #define __le16_to_cpu __cpu_to_le16
 #define __be16_to_cpu __cpu_to_be16
-
-#define __le64 __u64
-#define __le32 __u32
-#define __le16 __u16
-#define __le8  __u8
-#define __be64 __u64
-#define __be32 __u32
-#define __be16 __u16
-#define __be8  __u8
 #endif
 
 #ifndef __kernel_long_t
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/include/sound/uapi/asoc.h 
new/alsa-lib-1.2.8/include/sound/uapi/asoc.h
--- old/alsa-lib-1.2.7.2/include/sound/uapi/asoc.h      2022-07-08 
17:34:30.000000000 +0200
+++ new/alsa-lib-1.2.8/include/sound/uapi/asoc.h        2022-10-24 
10:17:27.000000000 +0200
@@ -16,7 +16,9 @@
 #ifndef __LINUX_UAPI_SND_ASOC_H
 #define __LINUX_UAPI_SND_ASOC_H
 
+#if defined(__linux__)
 #include <linux/types.h>
+#endif
 
 /*
  * Maximum number of channels topology kcontrol can represent.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/include/sound/uapi/asound.h 
new/alsa-lib-1.2.8/include/sound/uapi/asound.h
--- old/alsa-lib-1.2.7.2/include/sound/uapi/asound.h    2022-07-08 
17:34:30.000000000 +0200
+++ new/alsa-lib-1.2.8/include/sound/uapi/asound.h      2022-10-24 
10:17:27.000000000 +0200
@@ -28,7 +28,7 @@
 #include <linux/types.h>
 #include <asm/byteorder.h>
 #else
-#include <endian.h>
+#include <sys/endian.h>
 #include <sys/ioctl.h>
 #endif
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/include/version.h 
new/alsa-lib-1.2.8/include/version.h
--- old/alsa-lib-1.2.7.2/include/version.h      2022-07-08 17:36:16.000000000 
+0200
+++ new/alsa-lib-1.2.8/include/version.h        2022-10-24 10:19:31.000000000 
+0200
@@ -4,11 +4,11 @@
 
 #define SND_LIB_MAJOR          1 /**< major number of library version */
 #define SND_LIB_MINOR          2 /**< minor number of library version */
-#define SND_LIB_SUBMINOR       7 /**< subminor number of library version */
+#define SND_LIB_SUBMINOR       8 /**< subminor number of library version */
 #define SND_LIB_EXTRAVER       1000000 /**< extra version number, used mainly 
for betas */
 /** library version */
 #define SND_LIB_VER(maj, min, sub) (((maj)<<16)|((min)<<8)|(sub))
 #define SND_LIB_VERSION SND_LIB_VER(SND_LIB_MAJOR, SND_LIB_MINOR, 
SND_LIB_SUBMINOR)
 /** library version (string) */
-#define SND_LIB_VERSION_STR    "1.2.7.2"
+#define SND_LIB_VERSION_STR    "1.2.8"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/libtool new/alsa-lib-1.2.8/libtool
--- old/alsa-lib-1.2.7.2/libtool        2022-07-08 17:36:15.000000000 +0200
+++ new/alsa-lib-1.2.8/libtool  2022-10-24 10:19:31.000000000 +0200
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Generated automatically by config.status (alsa-lib) 1.2.7.2
+# Generated automatically by config.status (alsa-lib) 1.2.8
 # Libtool was configured on host f420bc43a183:
 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/src/async.c 
new/alsa-lib-1.2.8/src/async.c
--- old/alsa-lib-1.2.7.2/src/async.c    2022-07-08 17:34:30.000000000 +0200
+++ new/alsa-lib-1.2.8/src/async.c      2022-10-24 10:17:27.000000000 +0200
@@ -54,6 +54,15 @@
 
 static void snd_async_handler(int signo ATTRIBUTE_UNUSED, siginfo_t *siginfo, 
void *context ATTRIBUTE_UNUSED)
 {
+#if defined(__DragonFly__) || defined(__FreeBSD__) || defined(__OpenBSD__)
+       /* siginfo_t does not have si_fd */
+       struct list_head *i;
+       list_for_each(i, &snd_async_handlers) {
+               snd_async_handler_t *h = list_entry(i, snd_async_handler_t, 
glist);
+               if (h->callback)
+                       h->callback(h);
+       }
+#else
        int fd;
        struct list_head *i;
        //assert(siginfo->si_code == SI_SIGIO);
@@ -66,6 +75,7 @@
                if (h->fd == fd && h->callback)
                        h->callback(h);
        }
+#endif
 }
 
 /**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/src/conf/cards/USB-Audio.conf 
new/alsa-lib-1.2.8/src/conf/cards/USB-Audio.conf
--- old/alsa-lib-1.2.7.2/src/conf/cards/USB-Audio.conf  2022-07-08 
17:34:30.000000000 +0200
+++ new/alsa-lib-1.2.8/src/conf/cards/USB-Audio.conf    2022-10-24 
10:17:27.000000000 +0200
@@ -77,6 +77,7 @@
        "USB Device 0x46d_0x992" 999
        "WD15 Dock" 999
        "WD19 Dock" 999
+       "ThinkPad USB-C Dock Gen2 USB Au" 999
 }
 
 # Second iec958 device number, if any.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/src/conf.c 
new/alsa-lib-1.2.8/src/conf.c
--- old/alsa-lib-1.2.7.2/src/conf.c     2022-07-08 17:34:30.000000000 +0200
+++ new/alsa-lib-1.2.8/src/conf.c       2022-10-24 10:17:27.000000000 +0200
@@ -4115,7 +4115,7 @@
        if (!S_ISDIR(st.st_mode))
                return config_file_open(root, fn);
 #ifndef DOC_HIDDEN
-#if defined(_GNU_SOURCE) && !defined(__NetBSD__) && !defined(__FreeBSD__) && 
!defined(__sun) && !defined(ANDROID)
+#if defined(_GNU_SOURCE) && !defined(__NetBSD__) && !defined(__FreeBSD__) && 
!defined(__OpenBSD__) && !defined(__DragonFly__) && !defined(__sun) && 
!defined(ANDROID)
 #define SORTFUNC       versionsort64
 #else
 #define SORTFUNC       alphasort64
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/src/control/eld.c 
new/alsa-lib-1.2.8/src/control/eld.c
--- old/alsa-lib-1.2.7.2/src/control/eld.c      2022-07-08 17:34:30.000000000 
+0200
+++ new/alsa-lib-1.2.8/src/control/eld.c        2022-10-24 10:17:27.000000000 
+0200
@@ -47,7 +47,7 @@
        snd_ctl_elem_info_t cinfo = {0};
        snd_ctl_elem_value_t value = {0};
        unsigned char *eld;
-       unsigned int l;
+       unsigned int l, spc;
        char *s, c;
        int ret, valid;
 
@@ -82,20 +82,23 @@
                return 0;
        }
        s = alloca(l + 1);
-       s[l] = '\0';
        /* sanitize */
        valid = 0;
+       spc = 0;
        while (l > 0) {
                l--;
                c = eld[20 + l];
-               if (c < ' ' || c >= 0x7f) {
+               if (c <= ' ' || c >= 0x7f) {
                        s[l] = ' ';
                } else {
                        valid += !!isalnum(c);
                        s[l] = c;
+                       if (spc == 0)
+                               spc = l + 1;
                }
        }
        if (valid > 3) {
+               s[spc] = '\0';
                snd_strlcpy((char *)info->name, s, sizeof(info->name));
        } else {
 __present:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/src/control/namehint.c 
new/alsa-lib-1.2.8/src/control/namehint.c
--- old/alsa-lib-1.2.7.2/src/control/namehint.c 2022-07-08 17:34:30.000000000 
+0200
+++ new/alsa-lib-1.2.8/src/control/namehint.c   2022-10-24 10:17:27.000000000 
+0200
@@ -602,9 +602,7 @@
        list.siface = iface;
        list.show_all = 0;
        list.cardname = NULL;
-       if (strcmp(iface, "card") == 0)
-               list.iface = SND_CTL_ELEM_IFACE_CARD;
-       else if (strcmp(iface, "pcm") == 0)
+       if (strcmp(iface, "pcm") == 0)
                list.iface = SND_CTL_ELEM_IFACE_PCM;
        else if (strcmp(iface, "rawmidi") == 0)
                list.iface = SND_CTL_ELEM_IFACE_RAWMIDI;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/src/pcm/pcm.c 
new/alsa-lib-1.2.8/src/pcm/pcm.c
--- old/alsa-lib-1.2.7.2/src/pcm/pcm.c  2022-07-08 17:34:30.000000000 +0200
+++ new/alsa-lib-1.2.8/src/pcm/pcm.c    2022-10-24 10:17:27.000000000 +0200
@@ -660,7 +660,9 @@
 
 #include <stdio.h>
 #include <string.h>
+#if HAVE_MALLOC_H
 #include <malloc.h>
+#endif
 #include <stdarg.h>
 #include <signal.h>
 #include <ctype.h>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/src/pcm/pcm_direct.c 
new/alsa-lib-1.2.8/src/pcm/pcm_direct.c
--- old/alsa-lib-1.2.7.2/src/pcm/pcm_direct.c   2022-07-08 17:34:30.000000000 
+0200
+++ new/alsa-lib-1.2.8/src/pcm/pcm_direct.c     2022-10-24 10:17:27.000000000 
+0200
@@ -44,12 +44,16 @@
  *
  */
  
+#if !defined(__OpenBSD__) && !defined(__DragonFly__)
 union semun {
        int              val;    /* Value for SETVAL */
        struct semid_ds *buf;    /* Buffer for IPC_STAT, IPC_SET */
        unsigned short  *array;  /* Array for GETALL, SETALL */
+#if defined(__linux__)
        struct seminfo  *__buf;  /* Buffer for IPC_INFO (Linux specific) */
+#endif
 };
+#endif
  
 /*
  * FIXME:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/src/pcm/pcm_direct.h 
new/alsa-lib-1.2.8/src/pcm/pcm_direct.h
--- old/alsa-lib-1.2.7.2/src/pcm/pcm_direct.h   2022-07-08 17:34:30.000000000 
+0200
+++ new/alsa-lib-1.2.8/src/pcm/pcm_direct.h     2022-10-24 10:17:27.000000000 
+0200
@@ -224,6 +224,8 @@
        snd1_pcm_direct_nonblock
 #define snd_pcm_direct_async \
        snd1_pcm_direct_async
+#define snd_pcm_direct_poll_descriptors \
+       snd1_pcm_direct_poll_descriptors
 #define snd_pcm_direct_poll_revents \
        snd1_pcm_direct_poll_revents
 #define snd_pcm_direct_info \
@@ -264,6 +266,10 @@
        snd1_pcm_direct_set_chmap
 #define snd_pcm_direct_reset_slave_ptr \
        snd1_pcm_direct_reset_slave_ptr
+#define snd_pcm_direct_check_xrun \
+       snd1_pcm_direct_check_xrun
+#define snd_pcm_direct_slave_recover \
+       snd1_pcm_direct_slave_recover
 
 int snd_pcm_direct_semaphore_create_or_connect(snd_pcm_direct_t *dmix);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/src/pcm/pcm_dshare.c 
new/alsa-lib-1.2.8/src/pcm/pcm_dshare.c
--- old/alsa-lib-1.2.7.2/src/pcm/pcm_dshare.c   2022-07-08 17:34:30.000000000 
+0200
+++ new/alsa-lib-1.2.8/src/pcm/pcm_dshare.c     2022-10-24 10:17:27.000000000 
+0200
@@ -229,7 +229,7 @@
        case SNDRV_PCM_STATE_DRAINING:
        case SNDRV_PCM_STATE_RUNNING:
                snd_pcm_dshare_sync_ptr0(pcm, status->hw_ptr);
-               status->delay += snd_pcm_mmap_playback_delay(pcm);
+               status->delay = snd_pcm_mmap_playback_delay(pcm);
                break;
        default:
                break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/src/pcm/pcm_dsnoop.c 
new/alsa-lib-1.2.8/src/pcm/pcm_dsnoop.c
--- old/alsa-lib-1.2.7.2/src/pcm/pcm_dsnoop.c   2022-07-08 17:34:30.000000000 
+0200
+++ new/alsa-lib-1.2.8/src/pcm/pcm_dsnoop.c     2022-10-24 10:17:27.000000000 
+0200
@@ -215,7 +215,7 @@
                /* Fall through */
        case SNDRV_PCM_STATE_PREPARED:
        case SNDRV_PCM_STATE_SUSPENDED:
-               *delayp = snd_pcm_mmap_capture_avail(pcm);
+               *delayp = snd_pcm_mmap_capture_delay(pcm);
                return 0;
        case SNDRV_PCM_STATE_XRUN:
                return -EPIPE;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/src/pcm/pcm_mmap.c 
new/alsa-lib-1.2.8/src/pcm/pcm_mmap.c
--- old/alsa-lib-1.2.7.2/src/pcm/pcm_mmap.c     2022-07-08 17:34:30.000000000 
+0200
+++ new/alsa-lib-1.2.8/src/pcm/pcm_mmap.c       2022-10-24 10:17:27.000000000 
+0200
@@ -20,7 +20,9 @@
 
 #include "config.h"
 #include <stdio.h>
+#if HAVE_MALLOC_H
 #include <malloc.h>
+#endif
 #include <string.h>
 #include <poll.h>
 #include <sys/mman.h>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/src/pcm/pcm_params.c 
new/alsa-lib-1.2.8/src/pcm/pcm_params.c
--- old/alsa-lib-1.2.7.2/src/pcm/pcm_params.c   2022-07-08 17:34:30.000000000 
+0200
+++ new/alsa-lib-1.2.8/src/pcm/pcm_params.c     2022-10-24 10:17:27.000000000 
+0200
@@ -2407,6 +2407,8 @@
        INTERNAL(snd_pcm_hw_params_get_subformat)(params, &pcm->subformat);
        INTERNAL(snd_pcm_hw_params_get_channels)(params, &pcm->channels);
        INTERNAL(snd_pcm_hw_params_get_rate)(params, &pcm->rate, 0);
+       snd_interval_copy(&pcm->periods, 
&params->intervals[SND_PCM_HW_PARAM_PERIODS - SND_PCM_HW_PARAM_FIRST_INTERVAL]);
+       snd_interval_copy(&pcm->buffer_time, 
&params->intervals[SND_PCM_HW_PARAM_BUFFER_TIME - 
SND_PCM_HW_PARAM_FIRST_INTERVAL]);
        INTERNAL(snd_pcm_hw_params_get_period_time)(params, &pcm->period_time, 
0);
        INTERNAL(snd_pcm_hw_params_get_period_size)(params, &pcm->period_size, 
0);
        INTERNAL(snd_pcm_hw_params_get_buffer_size)(params, &pcm->buffer_size);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/src/pcm/pcm_rate.c 
new/alsa-lib-1.2.8/src/pcm/pcm_rate.c
--- old/alsa-lib-1.2.7.2/src/pcm/pcm_rate.c     2022-07-08 17:34:30.000000000 
+0200
+++ new/alsa-lib-1.2.8/src/pcm/pcm_rate.c       2022-10-24 10:17:27.000000000 
+0200
@@ -770,7 +770,7 @@
 
 static int snd_pcm_rate_commit_area(snd_pcm_t *pcm, snd_pcm_rate_t *rate,
                                    snd_pcm_uframes_t appl_offset,
-                                   snd_pcm_uframes_t size,
+                                   snd_pcm_uframes_t size ATTRIBUTE_UNUSED,
                                    snd_pcm_uframes_t slave_size)
 {
        snd_pcm_uframes_t cont = pcm->buffer_size - appl_offset;
@@ -816,7 +816,7 @@
                                   pcm->format);
                snd_pcm_areas_copy(rate->pareas, cont,
                                   areas, 0,
-                                  pcm->channels, size - cont,
+                                  pcm->channels, pcm->period_size - cont,
                                   pcm->format);
 
                snd_pcm_rate_write_areas1(pcm, rate->pareas, 0, rate->sareas, 
0);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/src/seq/seq_midi_event.c 
new/alsa-lib-1.2.8/src/seq/seq_midi_event.c
--- old/alsa-lib-1.2.7.2/src/seq/seq_midi_event.c       2022-07-08 
17:34:30.000000000 +0200
+++ new/alsa-lib-1.2.8/src/seq/seq_midi_event.c 2022-10-24 10:17:27.000000000 
+0200
@@ -28,7 +28,9 @@
  *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 
 USA
  */
 
+#if HAVE_MALLOC_H
 #include <malloc.h>
+#endif
 #include "local.h"
 
 #ifndef DOC_HIDDEN
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/src/shmarea.c 
new/alsa-lib-1.2.8/src/shmarea.c
--- old/alsa-lib-1.2.7.2/src/shmarea.c  2022-07-08 17:34:30.000000000 +0200
+++ new/alsa-lib-1.2.8/src/shmarea.c    2022-10-24 10:17:27.000000000 +0200
@@ -24,7 +24,10 @@
 #ifdef HAVE_SYS_SHM_H
 
 #include <stdio.h>
+#include <stdlib.h>
+#if HAVE_MALLOC_H
 #include <malloc.h>
+#endif
 #include <string.h>
 #include <errno.h>
 #include <poll.h>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/src/ucm/main.c 
new/alsa-lib-1.2.8/src/ucm/main.c
--- old/alsa-lib-1.2.7.2/src/ucm/main.c 2022-07-08 17:34:30.000000000 +0200
+++ new/alsa-lib-1.2.8/src/ucm/main.c   2022-10-24 10:17:27.000000000 +0200
@@ -1481,8 +1481,8 @@
                        goto skip;
        }
 
-       snd_config_delete(cfg);
 skip:
+       snd_config_delete(cfg);
        return end + 3;
 }
 
@@ -1518,7 +1518,7 @@
                mgr->suppress_nodev_errors = 1;
        }
 
-       if (card_name[0] == '<' && card_name[1] == '<' && card_name[2] == '<')
+       if (card_name && card_name[0] == '<' && card_name[1] == '<' && 
card_name[2] == '<')
                card_name = parse_open_variables(mgr, card_name);
 
        err = uc_mgr_card_open(mgr);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/src/ucm/parser.c 
new/alsa-lib-1.2.8/src/ucm/parser.c
--- old/alsa-lib-1.2.7.2/src/ucm/parser.c       2022-07-08 17:34:30.000000000 
+0200
+++ new/alsa-lib-1.2.8/src/ucm/parser.c 2022-10-24 10:17:27.000000000 +0200
@@ -247,6 +247,36 @@
 }
 
 /*
+ *
+ */
+static int parse_syntax_field(snd_use_case_mgr_t *uc_mgr,
+                             snd_config_t *cfg, const char *filename)
+{
+       snd_config_t *n;
+       long l;
+       int err;
+
+       err = snd_config_search(cfg, "Syntax", &n);
+       if (err < 0) {
+               uc_error("Syntax field not found in %s", filename);
+               return -EINVAL;
+       }
+       err = snd_config_get_integer(n, &l);
+       if (err < 0) {
+               uc_error("Syntax field is invalid in %s", filename);
+               return err;
+       }
+       if (l < 2 || l > SYNTAX_VERSION_MAX) {
+               uc_error("Incompatible syntax %ld in %s", l, filename);
+               return -EINVAL;
+       }
+       /* delete this field to optimize strcmp() call in the parsing loop */
+       snd_config_delete(n);
+       uc_mgr->conf_format = l;
+       return l;
+}
+
+/*
  * Evaluate variable regex definitions (in-place delete)
  */
 static int evaluate_regex(snd_use_case_mgr_t *uc_mgr,
@@ -415,15 +445,15 @@
                n = snd_config_iterator_entry(i);
                err = snd_config_get_id(n, &id);
                if (err < 0)
-                       return err;
+                       goto __err_path;
                err = snd_config_get_ascii(n, &var);
                if (err < 0)
-                       return err;
+                       goto __err_path;
                snprintf(name, sizeof(name), "__%s", id);
                err = uc_mgr_set_variable(uc_mgr, name, var);
                free(var);
                if (err < 0)
-                       return err;
+                       goto __err_path;
        }
 
        /* merge + substitute variables */
@@ -443,11 +473,11 @@
                n = snd_config_iterator_entry(i);
                err = snd_config_get_id(n, &id);
                if (err < 0)
-                       return err;
+                       goto __err_path;
                snprintf(name, sizeof(name), "__%s", id);
                err = uc_mgr_delete_variable(uc_mgr, name);
                if (err < 0)
-                       return err;
+                       goto __err_path;
        }
 
 __err_path:
@@ -2366,7 +2396,6 @@
        snd_config_iterator_t i, next;
        snd_config_t *n;
        const char *id;
-       long l;
        int err;
 
        if (snd_config_get_type(cfg) != SND_CONFIG_TYPE_COMPOUND) {
@@ -2375,23 +2404,9 @@
        }
 
        if (uc_mgr->conf_format >= 2) {
-               err = snd_config_search(cfg, "Syntax", &n);
-               if (err < 0) {
-                       uc_error("Syntax field not found in %s", 
uc_mgr->conf_file_name);
-                       return -EINVAL;
-               }
-               err = snd_config_get_integer(n, &l);
-               if (err < 0) {
-                       uc_error("Syntax field is invalid in %s", 
uc_mgr->conf_file_name);
+               err = parse_syntax_field(uc_mgr, cfg, uc_mgr->conf_file_name);
+               if (err < 0)
                        return err;
-               }
-               if (l < 2 || l > SYNTAX_VERSION_MAX) {
-                       uc_error("Incompatible syntax %d in %s", l, 
uc_mgr->conf_file_name);
-                       return -EINVAL;
-               }
-               /* delete this field to avoid strcmp() call in the loop */
-               snd_config_delete(n);
-               uc_mgr->conf_format = l;
        }
 
        /* in-place evaluation */
@@ -2473,6 +2488,10 @@
                if (strcmp(id, "Error") == 0)
                        return error_node(uc_mgr, n);
 
+               /* skip further Syntax value updates (Include) */
+               if (strcmp(id, "Syntax") == 0)
+                       continue;
+
                uc_error("unknown master file field %s", id);
        }
        return 0;
@@ -2701,7 +2720,6 @@
        snd_config_iterator_t i, next;
        snd_config_t *n;
        const char *id;
-       long l;
        int err;
 
        if (snd_config_get_type(cfg) != SND_CONFIG_TYPE_COMPOUND) {
@@ -2709,23 +2727,9 @@
                return -EINVAL;
        }
 
-       err = snd_config_search(cfg, "Syntax", &n);
-       if (err < 0) {
-               uc_error("Syntax field not found in %s", filename);
-               return -EINVAL;
-       }
-       err = snd_config_get_integer(n, &l);
-       if (err < 0) {
-               uc_error("Syntax field is invalid in %s", filename);
+       err = parse_syntax_field(uc_mgr, cfg, filename);
+       if (err < 0)
                return err;
-       }
-       if (l < 2 || l > SYNTAX_VERSION_MAX) {
-               uc_error("Incompatible syntax %d in %s", l, filename);
-               return -EINVAL;
-       }
-       /* delete this field to avoid strcmp() call in the loop */
-       snd_config_delete(n);
-       uc_mgr->conf_format = l;
 
        /* in-place evaluation */
        err = uc_mgr_evaluate_inplace(uc_mgr, cfg);
@@ -2756,6 +2760,10 @@
                        continue;
                }
 
+               /* skip further Syntax value updates (Include) */
+               if (strcmp(id, "Syntax") == 0)
+                       continue;
+
                uc_error("unknown toplevel field %s", id);
        }
 
@@ -2907,7 +2915,7 @@
                snprintf(filename, sizeof(filename), "%s/ucm2/conf.virt.d",
                         snd_config_topdir());
 
-#if defined(_GNU_SOURCE) && !defined(__NetBSD__) && !defined(__FreeBSD__) && 
!defined(__sun) && !defined(ANDROID)
+#if defined(_GNU_SOURCE) && !defined(__NetBSD__) && !defined(__FreeBSD__) && 
!defined(__OpenBSD__) && !defined(__DragonFly__) && !defined(__sun) && 
!defined(ANDROID)
 #define SORTFUNC       versionsort64
 #else
 #define SORTFUNC       alphasort64
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/src/ucm/ucm_confdoc.h 
new/alsa-lib-1.2.8/src/ucm/ucm_confdoc.h
--- old/alsa-lib-1.2.7.2/src/ucm/ucm_confdoc.h  2022-07-08 17:34:30.000000000 
+0200
+++ new/alsa-lib-1.2.8/src/ucm/ucm_confdoc.h    2022-10-24 10:17:27.000000000 
+0200
@@ -63,6 +63,8 @@
 # Example master file for blah sound card
 # By Joe Blogs <j...@bloggs.org>
 
+Syntax 6
+
 # Use Case name for user interface
 Comment "Nice Abstracted Soundcard"
 
@@ -91,7 +93,11 @@
 # ALSA card controls which may be modified by user after initial settings.
 
 BootSequence [
-  cset "name='My control' on"
+  cset "name='Master Playback Switch',index=2 0,0"
+  cset "name='Master Playback Volume',index=2 25,25"
+  msleep 50
+  cset "name='Master Playback Switch',index=2 1,1"
+  cset "name='Master Playback Volume',index=2 50,50"
 ]
 
 # Define fixed boot sequence
@@ -117,23 +123,16 @@
 
   # enable and disable sequences are compulsory
   EnableSequence [
-    cset "name='Master Playback Switch',index=2 0,0"
-    cset "name='Master Playback Volume',index=2 25,25"
-    msleep 50
-    cset "name='Master Playback Switch',index=2 1,1"
-    cset "name='Master Playback Volume',index=2 50,50"
+    disdevall ""       # run DisableSequence for all devices
   ]
 
   DisableSequence [
-    cset "name='Master Playback Switch',index=2 0,0"
-    cset "name='Master Playback Volume',index=2 25,25"
-    msleep 50
-    cset "name='Master Playback Switch',index=2 1,1"
-    cset "name='Master Playback Volume',index=2 50,50"
+    cset "name='Power Save' on"
   ]
 
   # Optional transition verb
   TransitionSequence."ToCaseName" [
+    disdevall ""       # run DisableSequence for all devices
     msleep 1
   ]
 
@@ -212,12 +211,18 @@
   Value {
     TQ Voice
     CapturePCM "hw:${CardId},11"
+    PlaybackMixerElem "Master"
     PlaybackVolume "name='Master Playback Volume',index=2"
     PlaybackSwitch "name='Master Playback Switch',index=2"
   }
 }
 ~~~
 
+### Sequence graphs
+
+\image html ucm-seq-verb.svg
+\image html ucm-seq-device.svg
+
 ### Sequence commands
 
 Command name   | Description
@@ -278,12 +283,25 @@
 the state of the controls to the /var tree and loads the previous state in the 
next
 boot).
 
+\image html ucm-seq-boot.svg
+
 ### Device volume
 
 It is expected that the applications handle the volume settings. It is not 
recommended
-to set the fixed values for the volume settings to the Enable / Disable 
sequences for
+to set the fixed values for the volume settings in the Enable / Disable 
sequences for
 verbs or devices, if the device exports the hardware volume (MixerElem or 
Volume/Switch
-values). The default volume settings should be set in the *BootSequence*.
+values). The default volume settings should be set in the *BootSequence*. The 
purpose
+for this scheme is to allow users to override defaults using the alsactl sound 
card
+state management.
+
+Checklist:
+
+1. Set default volume in BootSequence
+2. Verb's EnableSequence should ensure that all devices are turned off (mixer 
paths)
+   to avoid simultaneous device use - the previous state is unknown (see 
*disdevall*
+   and *disdev2* commands or create a new custom command sequence)
+
+\image html ucm-volume.svg
 
 ### Dynamic configuration tree
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/src/ucm/ucm_exec.c 
new/alsa-lib-1.2.8/src/ucm/ucm_exec.c
--- old/alsa-lib-1.2.7.2/src/ucm/ucm_exec.c     2022-07-08 17:34:30.000000000 
+0200
+++ new/alsa-lib-1.2.8/src/ucm/ucm_exec.c       2022-10-24 10:17:27.000000000 
+0200
@@ -33,6 +33,15 @@
 #include <limits.h>
 #include <dirent.h>
 
+#if defined(__NetBSD__) || defined(__OpenBSD__) || defined(__FreeBSD__) || 
defined(__DragonFly__)
+#include <signal.h>
+#if defined(__DragonFly__)
+#define environ NULL /* XXX */
+#else
+extern char **environ;
+#endif
+#endif
+
 static pthread_mutex_t fork_lock = PTHREAD_MUTEX_INITIALIZER;
 
 /*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-lib-1.2.7.2/version new/alsa-lib-1.2.8/version
--- old/alsa-lib-1.2.7.2/version        2022-07-08 17:36:11.000000000 +0200
+++ new/alsa-lib-1.2.8/version  2022-10-24 10:19:27.000000000 +0200
@@ -1 +1 @@
-1.2.7.2
+1.2.8

Reply via email to