Hello community, here is the log from the commit of package alsa for openSUSE:Factory checked in at 2016-04-05 10:41:44 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/alsa (Old) and /work/SRC/openSUSE:Factory/.alsa.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "alsa" Changes: -------- --- /work/SRC/openSUSE:Factory/alsa/alsa.changes 2016-02-09 16:48:36.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.alsa.new/alsa.changes 2016-04-05 10:41:45.000000000 +0200 @@ -1,0 +2,26 @@ +Thu Mar 31 15:19:33 CEST 2016 - ti...@suse.de + +- Update to alsa-lib 1.1.1: + * including previous fixes + * a few more fixes/cleanup of control API + * BSD compatibility changes + * sync with 4.6 kernel ABI + * provide API for sequencer sound card number / pid + * fix races at dmix/dsnoop plugin + * a few topology API updates +- Drop the obsoleted patches: + 0001-topology-Add-missing-include-sys-stat.h.patch + 0002-pcm-simple-Fix-asserts.patch + 0003-topology-open-topology-files-with-O_TRUNC.patch + 0004-topology-Remove-unused-function-write_data_block.patch + 0005-topology-Remove-unused-variables.patch + 0006-topology-Fix-comparison-of-unsigned-expression-0.patch + 0007-topology-Not-compare-a-for-loop-iterator-with-ABI-__.patch + 0008-topology-Quit-and-show-error-message-on-big-endian-m.patch + 0009-config-files-do-not-include-ucm-topology-configurati.patch + 0010-control-add-missing-asserts-to-ctl_elem_set-function.patch + 0011-pcm_hw-fix-possible-memory-leak-coverity.patch + 0012-coverity-fixes.patch + 0013-topology-fix-debug-output-to-print-correct-max-value.patch + +------------------------------------------------------------------- Old: ---- 0001-topology-Add-missing-include-sys-stat.h.patch 0002-pcm-simple-Fix-asserts.patch 0003-topology-open-topology-files-with-O_TRUNC.patch 0004-topology-Remove-unused-function-write_data_block.patch 0005-topology-Remove-unused-variables.patch 0006-topology-Fix-comparison-of-unsigned-expression-0.patch 0007-topology-Not-compare-a-for-loop-iterator-with-ABI-__.patch 0008-topology-Quit-and-show-error-message-on-big-endian-m.patch 0009-config-files-do-not-include-ucm-topology-configurati.patch 0010-control-add-missing-asserts-to-ctl_elem_set-function.patch 0011-pcm_hw-fix-possible-memory-leak-coverity.patch 0012-coverity-fixes.patch 0013-topology-fix-debug-output-to-print-correct-max-value.patch alsa-lib-1.1.0.tar.bz2 New: ---- alsa-lib-1.1.1.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ alsa.spec ++++++ --- /var/tmp/diff_new_pack.TWP9XZ/_old 2016-04-05 10:41:46.000000000 +0200 +++ /var/tmp/diff_new_pack.TWP9XZ/_new 2016-04-05 10:41:46.000000000 +0200 @@ -16,14 +16,14 @@ # -%define package_version 1.1.0 +%define package_version 1.1.1 %if 0%{?suse_version} > 1200 %define _udevdir %(pkg-config --variable=udevdir udev) %else %define _udevdir /lib/udev %endif Name: alsa -Version: 1.1.0 +Version: 1.1.1 Release: 0 # Summary: Advanced Linux Sound Architecture @@ -49,19 +49,6 @@ Source41: install-snd-module # Patch: alsa-lib-git-fixes.diff # upstream fixes -Patch1: 0001-topology-Add-missing-include-sys-stat.h.patch -Patch2: 0002-pcm-simple-Fix-asserts.patch -Patch3: 0003-topology-open-topology-files-with-O_TRUNC.patch -Patch4: 0004-topology-Remove-unused-function-write_data_block.patch -Patch5: 0005-topology-Remove-unused-variables.patch -Patch6: 0006-topology-Fix-comparison-of-unsigned-expression-0.patch -Patch7: 0007-topology-Not-compare-a-for-loop-iterator-with-ABI-__.patch -Patch8: 0008-topology-Quit-and-show-error-message-on-big-endian-m.patch -Patch9: 0009-config-files-do-not-include-ucm-topology-configurati.patch -Patch10: 0010-control-add-missing-asserts-to-ctl_elem_set-function.patch -Patch11: 0011-pcm_hw-fix-possible-memory-leak-coverity.patch -Patch12: 0012-coverity-fixes.patch -Patch13: 0013-topology-fix-debug-output-to-print-correct-max-value.patch # rest suse patches Patch99: alsa-lib-doxygen-avoid-crash-for-11.3.diff # suppress timestamp in documents @@ -132,19 +119,6 @@ %prep %setup -q -n alsa-lib-%{package_version} # %patch -p1 -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 -%patch10 -p1 -%patch11 -p1 -%patch12 -p1 -%patch13 -p1 %if 0%{?suse_version} == 1130 %patch99 -p1 %endif ++++++ alsa-lib-1.1.0.tar.bz2 -> alsa-lib-1.1.1.tar.bz2 ++++++ ++++ 1706 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/aserver/aserver.c new/alsa-lib-1.1.1/aserver/aserver.c --- old/alsa-lib-1.1.0/aserver/aserver.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/aserver/aserver.c 2016-03-31 15:10:39.000000000 +0200 @@ -93,6 +93,7 @@ return result; } + memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port = htons(port); addr.sin_addr.s_addr = INADDR_ANY; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/configure.ac new/alsa-lib-1.1.1/configure.ac --- old/alsa-lib-1.1.0/configure.ac 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/configure.ac 2016-03-31 15:10:39.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.1.0) +AC_INIT(alsa-lib, 1.1.1) AC_CONFIG_SRCDIR([src/control/control.c]) AC_CONFIG_MACRO_DIR([m4]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/include/Makefile.am new/alsa-lib-1.1.1/include/Makefile.am --- old/alsa-lib-1.1.0/include/Makefile.am 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/include/Makefile.am 2016-03-31 15:10:39.000000000 +0200 @@ -59,7 +59,7 @@ endif noinst_HEADERS = alsa sys.h search.h list.h aserver.h local.h alsa-symbols.h \ - asoundlib-head.h asoundlib-tail.h + asoundlib-head.h asoundlib-tail.h bswap.h type_compat.h DISTCLEANFILES = stamp-vh version.h alsa asoundlib.h diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/include/bswap.h new/alsa-lib-1.1.1/include/bswap.h --- old/alsa-lib-1.1.0/include/bswap.h 1970-01-01 01:00:00.000000000 +0100 +++ new/alsa-lib-1.1.1/include/bswap.h 2016-03-31 15:10:39.000000000 +0200 @@ -0,0 +1,39 @@ +/* + * ALSA lib - compatibility header for providing byte swapping macros + * Copyright (c) 2016 by Thomas Klausner <w...@netbsd.org> + * + * + * This library is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#ifndef __BSWAP_H +#define __BSWAP_H + +#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) +#include <sys/endian.h> +#define bswap_16 bswap16 +#define bswap_32 bswap32 +#define bswap_64 bswap64 +#elif defined (__sun) +#include <sys/byteorder.h> +#define bswap_16 BSWAP_16 +#define bswap_32 BSWAP_32 +#define bswap_64 BSWAP_64 +#else +#include <byteswap.h> +#endif + +#endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/include/local.h new/alsa-lib-1.1.1/include/local.h --- old/alsa-lib-1.1.0/include/local.h 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/include/local.h 2016-03-31 15:10:39.000000000 +0200 @@ -50,8 +50,12 @@ #include <sys/poll.h> #include <sys/types.h> #include <errno.h> +#if defined(__linux__) #include <linux/types.h> #include <linux/ioctl.h> +#else +#include "type_compat.h" +#endif #ifdef SUPPORT_RESMGR #include <resmgr.h> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/include/seq.h new/alsa-lib-1.1.1/include/seq.h --- old/alsa-lib-1.1.0/include/seq.h 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/include/seq.h 2016-03-31 15:10:39.000000000 +0200 @@ -143,6 +143,8 @@ const char *snd_seq_client_info_get_name(snd_seq_client_info_t *info); int snd_seq_client_info_get_broadcast_filter(const snd_seq_client_info_t *info); int snd_seq_client_info_get_error_bounce(const snd_seq_client_info_t *info); +int snd_seq_client_info_get_card(const snd_seq_client_info_t *info); +int snd_seq_client_info_get_pid(const snd_seq_client_info_t *info); const unsigned char *snd_seq_client_info_get_event_filter(const snd_seq_client_info_t *info); int snd_seq_client_info_get_num_ports(const snd_seq_client_info_t *info); int snd_seq_client_info_get_event_lost(const snd_seq_client_info_t *info); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/include/sound/asequencer.h new/alsa-lib-1.1.1/include/sound/asequencer.h --- old/alsa-lib-1.1.0/include/sound/asequencer.h 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/include/sound/asequencer.h 2016-03-31 15:10:39.000000000 +0200 @@ -22,9 +22,10 @@ #ifndef _UAPI__SOUND_ASEQUENCER_H #define _UAPI__SOUND_ASEQUENCER_H +#include <sound/asound.h> /** version of the sequencer */ -#define SNDRV_SEQ_VERSION SNDRV_PROTOCOL_VERSION (1, 0, 1) +#define SNDRV_SEQ_VERSION SNDRV_PROTOCOL_VERSION(1, 0, 2) /** * definition of sequencer event types @@ -356,7 +357,9 @@ unsigned char event_filter[32]; /* event filter bitmap */ int num_ports; /* RO: number of ports */ int event_lost; /* number of lost events */ - char reserved[64]; /* for future use */ + int card; /* RO: card number[kernel] */ + int pid; /* RO: pid[user] */ + char reserved[56]; /* for future use */ }; @@ -593,14 +596,8 @@ #define SNDRV_SEQ_IOCTL_GET_QUEUE_STATUS _IOWR('S', 0x40, struct snd_seq_queue_status) #define SNDRV_SEQ_IOCTL_GET_QUEUE_TEMPO _IOWR('S', 0x41, struct snd_seq_queue_tempo) #define SNDRV_SEQ_IOCTL_SET_QUEUE_TEMPO _IOW ('S', 0x42, struct snd_seq_queue_tempo) -#define SNDRV_SEQ_IOCTL_GET_QUEUE_OWNER _IOWR('S', 0x43, struct snd_seq_queue_owner) -#define SNDRV_SEQ_IOCTL_SET_QUEUE_OWNER _IOW ('S', 0x44, struct snd_seq_queue_owner) #define SNDRV_SEQ_IOCTL_GET_QUEUE_TIMER _IOWR('S', 0x45, struct snd_seq_queue_timer) #define SNDRV_SEQ_IOCTL_SET_QUEUE_TIMER _IOW ('S', 0x46, struct snd_seq_queue_timer) -/* XXX -#define SNDRV_SEQ_IOCTL_GET_QUEUE_SYNC _IOWR('S', 0x53, struct snd_seq_queue_sync) -#define SNDRV_SEQ_IOCTL_SET_QUEUE_SYNC _IOW ('S', 0x54, struct snd_seq_queue_sync) -*/ #define SNDRV_SEQ_IOCTL_GET_QUEUE_CLIENT _IOWR('S', 0x49, struct snd_seq_queue_client) #define SNDRV_SEQ_IOCTL_SET_QUEUE_CLIENT _IOW ('S', 0x4a, struct snd_seq_queue_client) #define SNDRV_SEQ_IOCTL_GET_CLIENT_POOL _IOWR('S', 0x4b, struct snd_seq_client_pool) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/include/sound/asound.h new/alsa-lib-1.1.1/include/sound/asound.h --- old/alsa-lib-1.1.0/include/sound/asound.h 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/include/sound/asound.h 2016-03-31 15:10:39.000000000 +0200 @@ -23,7 +23,11 @@ #ifndef _UAPI__SOUND_ASOUND_H #define _UAPI__SOUND_ASOUND_H +#if defined(__KERNEL__) || defined(__linux__) #include <linux/types.h> +#else +#include <sys/ioctl.h> +#endif #ifndef __KERNEL__ #include <stdlib.h> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/include/topology.h new/alsa-lib-1.1.1/include/topology.h --- old/alsa-lib-1.1.0/include/topology.h 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/include/topology.h 2016-03-31 15:10:39.000000000 +0200 @@ -93,6 +93,35 @@ * * range * * strobe * +* <h5>Control Access</h5> + * Controls access can be specified using the "access" section. If no "access" + * section is defined then default RW access flags are set for normal and TLV + * controls. + * + * <pre> + * access [ + * read + * write + * tlv_command + * ] + * </pre> + * + * The standard access flags are as follows :- + * * read + * * write + * * read_write + * * volatile + * * timestamp + * * tlv_read + * * tlv_write + * * tlv_read_write + * * tlv_command + * * inactive + * * lock + * * owner + * * tlv_callback + * * user + * * <h5>Control TLV Data</h5> * Controls can also use TLV data to represent dB information. This can be done * by defining a TLV section and using the TLV section within the control. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/include/type_compat.h new/alsa-lib-1.1.1/include/type_compat.h --- old/alsa-lib-1.1.0/include/type_compat.h 1970-01-01 01:00:00.000000000 +0100 +++ new/alsa-lib-1.1.1/include/type_compat.h 2016-03-31 15:10:39.000000000 +0200 @@ -0,0 +1,73 @@ +/* + * ALSA lib - compatibility header to be included by local.h + * Copyright (c) 2016 by Thomas Klausner <w...@netbsd.org> + * + * + * This library is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#ifndef __TYPE_COMPAT_H +#define __TYPE_COMPAT_H + +#ifndef EBADFD +#define EBADFD EBADF +#endif +#ifndef ESTRPIPE +#define ESTRPIPE EPIPE +#endif + +#ifndef __u16 +#define __u16 uint16_t +#endif +#ifndef __u32 +#define __u32 uint32_t +#endif +#ifndef __u64 +#define __u64 uint64_t +#endif +#ifndef __le16 +#define __le16 uint16_t +#endif +#ifndef __le32 +#define __le32 uint32_t +#endif +#ifndef __le64 +#define __le64 uint64_t +#endif +#ifndef u_int8_t +#define u_int8_t uint8_t +#endif +#ifndef u_int16_t +#define u_int16_t uint16_t +#endif +#ifndef u_int32_t +#define u_int32_t uint32_t +#endif +#ifndef u_int32_t +#define u_int32_t uint64_t +#endif +#ifndef __kernel_pid_t +#define __kernel_pid_t pid_t +#endif +#ifndef __kernel_off_t +#define __kernel_off_t off_t +#endif + +#ifndef __bitwise +#define __bitwise +#endif + +#endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/include/version.h new/alsa-lib-1.1.1/include/version.h --- old/alsa-lib-1.1.0/include/version.h 2015-11-09 08:40:19.000000000 +0100 +++ new/alsa-lib-1.1.1/include/version.h 2016-03-31 15:13:28.000000000 +0200 @@ -4,12 +4,12 @@ #define SND_LIB_MAJOR 1 /**< major number of library version */ #define SND_LIB_MINOR 1 /**< minor number of library version */ -#define SND_LIB_SUBMINOR 0 /**< subminor number of library version */ +#define SND_LIB_SUBMINOR 1 /**< subminor number of library version */ #define SND_LIB_EXTRAVER 1000000 /**< extra version number, used mainly for betas */ /** library version */ #define SND_LIB_VERSION ((SND_LIB_MAJOR<<16)|\ (SND_LIB_MINOR<<8)|\ SND_LIB_SUBMINOR) /** library version (string) */ -#define SND_LIB_VERSION_STR "1.1.0" +#define SND_LIB_VERSION_STR "1.1.1" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/libtool new/alsa-lib-1.1.1/libtool --- old/alsa-lib-1.1.0/libtool 2015-11-09 08:40:19.000000000 +0100 +++ new/alsa-lib-1.1.1/libtool 2016-03-31 15:13:28.000000000 +0200 @@ -1,7 +1,7 @@ #! /bin/sh # libtool - Provide generalized library-building support services. -# Generated automatically by config.status (alsa-lib) 1.1.0 +# Generated automatically by config.status (alsa-lib) 1.1.1 # Libtool was configured on host alsa.alsa-project.org: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/conf/Makefile.am new/alsa-lib-1.1.1/src/conf/Makefile.am --- old/alsa-lib-1.1.0/src/conf/Makefile.am 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/conf/Makefile.am 2016-03-31 15:10:39.000000000 +0200 @@ -1,4 +1,11 @@ -SUBDIRS=cards pcm alsa.conf.d ucm topology +SUBDIRS=cards pcm alsa.conf.d + +if BUILD_UCM +SUBDIRS += ucm +endif +if BUILD_TOPOLOGY +SUBDIRS += topology +endif cfg_files = alsa.conf if BUILD_ALISP diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/conf.c new/alsa-lib-1.1.1/src/conf.c --- old/alsa-lib-1.1.0/src/conf.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/conf.c 2016-03-31 15:10:39.000000000 +0200 @@ -3549,7 +3549,7 @@ int n; #ifndef DOC_HIDDEN -#ifdef _GNU_SOURCE +#if defined(_GNU_SOURCE) && !defined(__NetBSD__) && !defined(__FreeBSD__) && !defined(__sun) #define SORTFUNC versionsort #else #define SORTFUNC alphasort diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/control/control.c new/alsa-lib-1.1.1/src/control/control.c --- old/alsa-lib-1.1.0/src/control/control.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/control/control.c 2016-03-31 15:10:39.000000000 +0200 @@ -35,7 +35,7 @@ \section control_general_overview General overview -The primitive controls can be integer, boolean, enumerators, bytes +The primitive controls can be integer, inter64, boolean, enumerators, bytes and IEC958 structure. */ @@ -292,7 +292,7 @@ if (err < 0) return err; snd_ctl_elem_value_alloca(&val); - val->id = *id; + val->id = info->id; for (i = 0; i < count; i++) val->value.integer.value[i] = min; err = ctl->ops->element_write(ctl, val); @@ -330,7 +330,7 @@ if (err < 0) return err; snd_ctl_elem_value_alloca(&val); - val->id = *id; + val->id = info->id; for (i = 0; i < count; i++) val->value.integer64.value[i] = min; err = ctl->ops->element_write(ctl, val); @@ -411,7 +411,7 @@ bytes = 0; for (i = 0; i < items; ++i) bytes += strlen(names[i]) + 1; - buf = malloc(bytes); + buf = bytes ? malloc(bytes) : NULL; if (!buf) return -ENOMEM; info->value.enumerated.names_ptr = (uintptr_t)buf; @@ -2497,7 +2497,7 @@ int snd_ctl_elem_value_get_boolean(const snd_ctl_elem_value_t *obj, unsigned int idx) { assert(obj); - assert(idx < sizeof(obj->value.integer.value) / sizeof(obj->value.integer.value[0])); + assert(idx < ARRAY_SIZE(obj->value.integer.value)); return obj->value.integer.value[idx]; } @@ -2510,7 +2510,7 @@ long snd_ctl_elem_value_get_integer(const snd_ctl_elem_value_t *obj, unsigned int idx) { assert(obj); - assert(idx < sizeof(obj->value.integer.value) / sizeof(obj->value.integer.value[0])); + assert(idx < ARRAY_SIZE(obj->value.integer.value)); return obj->value.integer.value[idx]; } @@ -2523,7 +2523,7 @@ long long snd_ctl_elem_value_get_integer64(const snd_ctl_elem_value_t *obj, unsigned int idx) { assert(obj); - assert(idx < sizeof(obj->value.integer64.value) / sizeof(obj->value.integer64.value[0])); + assert(idx < ARRAY_SIZE(obj->value.integer64.value)); return obj->value.integer64.value[idx]; } @@ -2536,7 +2536,7 @@ unsigned int snd_ctl_elem_value_get_enumerated(const snd_ctl_elem_value_t *obj, unsigned int idx) { assert(obj); - assert(idx < sizeof(obj->value.enumerated.item) / sizeof(obj->value.enumerated.item[0])); + assert(idx < ARRAY_SIZE(obj->value.enumerated.item)); return obj->value.enumerated.item[idx]; } @@ -2549,7 +2549,7 @@ unsigned char snd_ctl_elem_value_get_byte(const snd_ctl_elem_value_t *obj, unsigned int idx) { assert(obj); - assert(idx < sizeof(obj->value.bytes.data)); + assert(idx < ARRAY_SIZE(obj->value.bytes.data)); return obj->value.bytes.data[idx]; } @@ -2562,6 +2562,7 @@ void snd_ctl_elem_value_set_boolean(snd_ctl_elem_value_t *obj, unsigned int idx, long val) { assert(obj); + assert(idx < ARRAY_SIZE(obj->value.integer.value)); obj->value.integer.value[idx] = val; } @@ -2574,6 +2575,7 @@ void snd_ctl_elem_value_set_integer(snd_ctl_elem_value_t *obj, unsigned int idx, long val) { assert(obj); + assert(idx < ARRAY_SIZE(obj->value.integer.value)); obj->value.integer.value[idx] = val; } @@ -2586,6 +2588,7 @@ void snd_ctl_elem_value_set_integer64(snd_ctl_elem_value_t *obj, unsigned int idx, long long val) { assert(obj); + assert(idx < ARRAY_SIZE(obj->value.integer64.value)); obj->value.integer64.value[idx] = val; } @@ -2598,6 +2601,7 @@ void snd_ctl_elem_value_set_enumerated(snd_ctl_elem_value_t *obj, unsigned int idx, unsigned int val) { assert(obj); + assert(idx < ARRAY_SIZE(obj->value.enumerated.item)); obj->value.enumerated.item[idx] = val; } @@ -2610,6 +2614,7 @@ void snd_ctl_elem_value_set_byte(snd_ctl_elem_value_t *obj, unsigned int idx, unsigned char val) { assert(obj); + assert(idx < ARRAY_SIZE(obj->value.bytes.data)); obj->value.bytes.data[idx] = val; } @@ -2622,10 +2627,7 @@ void snd_ctl_elem_set_bytes(snd_ctl_elem_value_t *obj, void *data, size_t size) { assert(obj); - if (size >= sizeof(obj->value.bytes.data)) { - assert(0); - return; - } + assert(size < ARRAY_SIZE(obj->value.bytes.data)); memcpy(obj->value.bytes.data, data, size); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/control/ctlparse.c new/alsa-lib-1.1.1/src/control/ctlparse.c --- old/alsa-lib-1.1.0/src/control/ctlparse.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/control/ctlparse.c 2016-03-31 15:10:39.000000000 +0200 @@ -62,7 +62,7 @@ val = strtol(s, &p, 0); if (*p == '.') { p++; - strtol(p, &p, 10); + (void)strtol(p, &p, 10); } if (*p == '%') { val = (long)convert_prange1(strtod(s, NULL), min, max); @@ -90,7 +90,7 @@ val = strtol(s, &p, 0); if (*p == '.') { p++; - strtol(p, &p, 10); + (void)strtol(p, &p, 10); } if (*p == '%') { val = (long long)convert_prange1(strtod(s, NULL), min, max); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/control/namehint.c new/alsa-lib-1.1.1/src/control/namehint.c --- old/alsa-lib-1.1.0/src/control/namehint.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/control/namehint.c 2016-03-31 15:10:39.000000000 +0200 @@ -559,6 +559,8 @@ if (err < 0) return err; err = snd_config_copy(&local_config_rw, local_config); + if (err < 0) + return err; list.list = NULL; list.count = list.allocated = 0; list.siface = iface; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/pcm/pcm.c new/alsa-lib-1.1.1/src/pcm/pcm.c --- old/alsa-lib-1.1.0/src/pcm/pcm.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/pcm/pcm.c 2016-03-31 15:10:39.000000000 +0200 @@ -7512,7 +7512,7 @@ */ void snd_pcm_free_chmaps(snd_pcm_chmap_query_t **maps) { - snd_pcm_chmap_query_t **p = maps; + snd_pcm_chmap_query_t **p; if (!maps) return; for (p = maps; *p; p++) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/pcm/pcm_adpcm.c new/alsa-lib-1.1.1/src/pcm/pcm_adpcm.c --- old/alsa-lib-1.1.0/src/pcm/pcm_adpcm.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/pcm/pcm_adpcm.c 2016-03-31 15:10:39.000000000 +0200 @@ -56,7 +56,7 @@ come across a good description of XA yet. */ -#include <byteswap.h> +#include "bswap.h" #include "pcm_local.h" #include "pcm_plugin.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/pcm/pcm_alaw.c new/alsa-lib-1.1.1/src/pcm/pcm_alaw.c --- old/alsa-lib-1.1.0/src/pcm/pcm_alaw.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/pcm/pcm_alaw.c 2016-03-31 15:10:39.000000000 +0200 @@ -26,7 +26,7 @@ * */ -#include <byteswap.h> +#include "bswap.h" #include "pcm_local.h" #include "pcm_plugin.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/pcm/pcm_copy.c new/alsa-lib-1.1.1/src/pcm/pcm_copy.c --- old/alsa-lib-1.1.0/src/pcm/pcm_copy.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/pcm/pcm_copy.c 2016-03-31 15:10:39.000000000 +0200 @@ -26,7 +26,7 @@ * */ -#include <byteswap.h> +#include "bswap.h" #include "pcm_local.h" #include "pcm_plugin.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/pcm/pcm_direct.c new/alsa-lib-1.1.1/src/pcm/pcm_direct.c --- old/alsa-lib-1.1.0/src/pcm/pcm_direct.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/pcm/pcm_direct.c 2016-03-31 15:10:39.000000000 +0200 @@ -91,13 +91,19 @@ int snd_pcm_direct_shm_create_or_connect(snd_pcm_direct_t *dmix) { struct shmid_ds buf; - int tmpid, err; + int tmpid, err, first_instance = 0; retryget: dmix->shmid = shmget(dmix->ipc_key, sizeof(snd_pcm_direct_share_t), - IPC_CREAT | dmix->ipc_perm); + dmix->ipc_perm); + if (dmix->shmid < 0) { + if (errno == ENOENT) + if ((dmix->shmid = shmget(dmix->ipc_key, sizeof(snd_pcm_direct_share_t), + IPC_CREAT | IPC_EXCL | dmix->ipc_perm)) != -1) + first_instance = 1; + } err = -errno; - if (dmix->shmid < 0){ + if (dmix->shmid < 0) { if (errno == EINVAL) if ((tmpid = shmget(dmix->ipc_key, 0, dmix->ipc_perm)) != -1) if (!shmctl(tmpid, IPC_STAT, &buf)) @@ -119,7 +125,7 @@ snd_pcm_direct_shm_discard(dmix); return err; } - if (buf.shm_nattch == 1) { /* we're the first user, clear the segment */ + if (first_instance) { /* we're the first user, clear the segment */ memset(dmix->shmptr, 0, sizeof(snd_pcm_direct_share_t)); if (dmix->ipc_gid >= 0) { buf.shm_perm.gid = dmix->ipc_gid; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/pcm/pcm_dmix_generic.c new/alsa-lib-1.1.1/src/pcm/pcm_dmix_generic.c --- old/alsa-lib-1.1.0/src/pcm/pcm_dmix_generic.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/pcm/pcm_dmix_generic.c 2016-03-31 15:10:39.000000000 +0200 @@ -125,7 +125,7 @@ (1ULL << SND_PCM_FORMAT_S24_LE) | (1ULL << SND_PCM_FORMAT_S24_3LE) | \ (1ULL << SND_PCM_FORMAT_U8)) -#include <byteswap.h> +#include "bswap.h" static void generic_mix_areas_16_native(unsigned int size, volatile signed short *dst, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/pcm/pcm_file.c new/alsa-lib-1.1.1/src/pcm/pcm_file.c --- old/alsa-lib-1.1.0/src/pcm/pcm_file.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/pcm/pcm_file.c 2016-03-31 15:10:39.000000000 +0200 @@ -26,7 +26,7 @@ * */ -#include <byteswap.h> +#include "bswap.h" #include <ctype.h> #include <string.h> #include "pcm_local.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/pcm/pcm_hw.c new/alsa-lib-1.1.1/src/pcm/pcm_hw.c --- old/alsa-lib-1.1.0/src/pcm/pcm_hw.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/pcm/pcm_hw.c 2016-03-31 15:10:39.000000000 +0200 @@ -1693,12 +1693,14 @@ err = snd_config_get_string(n, &str); if (err < 0) { SNDERR("Invalid type for %s", id); - return -EINVAL; + err = -EINVAL; + goto fail; } card = snd_card_get_index(str); if (card < 0) { SNDERR("Invalid value for %s", id); - return card; + err = card; + goto fail; } } continue; @@ -1707,7 +1709,7 @@ err = snd_config_get_integer(n, &device); if (err < 0) { SNDERR("Invalid type for %s", id); - return err; + goto fail; } continue; } @@ -1715,7 +1717,7 @@ err = snd_config_get_integer(n, &subdevice); if (err < 0) { SNDERR("Invalid type for %s", id); - return err; + goto fail; } continue; } @@ -1738,7 +1740,7 @@ err = snd_config_get_integer(n, &val); if (err < 0) { SNDERR("Invalid type for %s", id); - return err; + goto fail; } rate = val; continue; @@ -1747,7 +1749,7 @@ err = snd_config_get_string(n, &str); if (err < 0) { SNDERR("invalid type for %s", id); - return err; + goto fail; } format = snd_pcm_format_value(str); continue; @@ -1757,7 +1759,7 @@ err = snd_config_get_integer(n, &val); if (err < 0) { SNDERR("Invalid type for %s", id); - return err; + goto fail; } channels = val; continue; @@ -1767,26 +1769,24 @@ chmap = _snd_pcm_parse_config_chmaps(n); if (!chmap) { SNDERR("Invalid channel map for %s", id); - return -EINVAL; + goto fail; } continue; } SNDERR("Unknown field %s", id); - snd_pcm_free_chmaps(chmap); - return -EINVAL; + err = -EINVAL; + goto fail; } if (card < 0) { SNDERR("card is not defined"); - snd_pcm_free_chmaps(chmap); - return -EINVAL; + err = -EINVAL; + goto fail; } err = snd_pcm_hw_open(pcmp, name, card, device, subdevice, stream, mode | (nonblock ? SND_PCM_NONBLOCK : 0), 0, sync_ptr_ioctl); - if (err < 0) { - snd_pcm_free_chmaps(chmap); - return err; - } + if (err < 0) + goto fail; if (nonblock && ! (mode & SND_PCM_NONBLOCK)) { /* revert to blocking mode for read/write access */ snd_pcm_hw_nonblock(*pcmp, 0); @@ -1810,6 +1810,10 @@ hw->chmap_override = chmap; return 0; + +fail: + snd_pcm_free_chmaps(chmap); + return err; } #ifndef DOC_HIDDEN diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/pcm/pcm_iec958.c new/alsa-lib-1.1.1/src/pcm/pcm_iec958.c --- old/alsa-lib-1.1.0/src/pcm/pcm_iec958.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/pcm/pcm_iec958.c 2016-03-31 15:10:39.000000000 +0200 @@ -26,7 +26,7 @@ * */ -#include <byteswap.h> +#include "bswap.h" #include "pcm_local.h" #include "pcm_plugin.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/pcm/pcm_lfloat.c new/alsa-lib-1.1.1/src/pcm/pcm_lfloat.c --- old/alsa-lib-1.1.0/src/pcm/pcm_lfloat.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/pcm/pcm_lfloat.c 2016-03-31 15:10:39.000000000 +0200 @@ -26,7 +26,7 @@ * */ -#include <byteswap.h> +#include "bswap.h" #include "pcm_local.h" #include "pcm_plugin.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/pcm/pcm_linear.c new/alsa-lib-1.1.1/src/pcm/pcm_linear.c --- old/alsa-lib-1.1.0/src/pcm/pcm_linear.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/pcm/pcm_linear.c 2016-03-31 15:10:39.000000000 +0200 @@ -26,7 +26,7 @@ * */ -#include <byteswap.h> +#include "bswap.h" #include "pcm_local.h" #include "pcm_plugin.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/pcm/pcm_meter.c new/alsa-lib-1.1.1/src/pcm/pcm_meter.c --- old/alsa-lib-1.1.0/src/pcm/pcm_meter.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/pcm/pcm_meter.c 2016-03-31 15:10:39.000000000 +0200 @@ -27,7 +27,7 @@ */ -#include <byteswap.h> +#include "bswap.h" #include <time.h> #include <pthread.h> #include <dlfcn.h> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/pcm/pcm_misc.c new/alsa-lib-1.1.1/src/pcm/pcm_misc.c --- old/alsa-lib-1.1.0/src/pcm/pcm_misc.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/pcm/pcm_misc.c 2016-03-31 15:10:39.000000000 +0200 @@ -23,7 +23,7 @@ #include <stdlib.h> #include <unistd.h> #include <string.h> -#include <byteswap.h> +#include "bswap.h" #include "pcm_local.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/pcm/pcm_mulaw.c new/alsa-lib-1.1.1/src/pcm/pcm_mulaw.c --- old/alsa-lib-1.1.0/src/pcm/pcm_mulaw.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/pcm/pcm_mulaw.c 2016-03-31 15:10:39.000000000 +0200 @@ -26,7 +26,7 @@ * */ -#include <byteswap.h> +#include "bswap.h" #include "pcm_local.h" #include "pcm_plugin.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/pcm/pcm_multi.c new/alsa-lib-1.1.1/src/pcm/pcm_multi.c --- old/alsa-lib-1.1.0/src/pcm/pcm_multi.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/pcm/pcm_multi.c 2016-03-31 15:10:39.000000000 +0200 @@ -888,6 +888,8 @@ slave_maps[i] = calloc(multi->slaves[i].channels_count + 1, sizeof(int)); if (!slave_maps[i]) { + for (i++; i < multi->slaves_count; i++) + slave_maps[i] = NULL; err = -ENOMEM; goto error; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/pcm/pcm_null.c new/alsa-lib-1.1.1/src/pcm/pcm_null.c --- old/alsa-lib-1.1.0/src/pcm/pcm_null.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/pcm/pcm_null.c 2016-03-31 15:10:39.000000000 +0200 @@ -26,7 +26,7 @@ * */ -#include <byteswap.h> +#include "bswap.h" #include <limits.h> #include "pcm_local.h" #include "pcm_plugin.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/pcm/pcm_rate.c new/alsa-lib-1.1.1/src/pcm/pcm_rate.c --- old/alsa-lib-1.1.0/src/pcm/pcm_rate.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/pcm/pcm_rate.c 2016-03-31 15:10:39.000000000 +0200 @@ -28,7 +28,7 @@ * */ #include <inttypes.h> -#include <byteswap.h> +#include "bswap.h" #include "pcm_local.h" #include "pcm_plugin.h" #include "pcm_rate.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/pcm/pcm_rate_linear.c new/alsa-lib-1.1.1/src/pcm/pcm_rate_linear.c --- old/alsa-lib-1.1.0/src/pcm/pcm_rate_linear.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/pcm/pcm_rate_linear.c 2016-03-31 15:10:39.000000000 +0200 @@ -21,7 +21,7 @@ */ #include <inttypes.h> -#include <byteswap.h> +#include "bswap.h" #include "pcm_local.h" #include "pcm_plugin.h" #include "pcm_rate.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/pcm/pcm_route.c new/alsa-lib-1.1.1/src/pcm/pcm_route.c --- old/alsa-lib-1.1.0/src/pcm/pcm_route.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/pcm/pcm_route.c 2016-03-31 15:10:39.000000000 +0200 @@ -26,7 +26,7 @@ * */ -#include <byteswap.h> +#include "bswap.h" #include <math.h> #include "pcm_local.h" #include "pcm_plugin.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/pcm/pcm_simple.c new/alsa-lib-1.1.1/src/pcm/pcm_simple.c --- old/alsa-lib-1.1.0/src/pcm/pcm_simple.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/pcm/pcm_simple.c 2016-03-31 15:10:39.000000000 +0200 @@ -173,8 +173,8 @@ snd_pcm_sw_params_alloca(&sw_params); assert(pcm); - assert(rate > 5000 && rate < 192000); - assert(channels > 1 && channels < 512); + assert(rate >= 5000 && rate <= 192000); + assert(channels >= 1 && channels <= 512); rrate = rate; err = set_buffer_time(latency, &buffer_time); @@ -233,8 +233,8 @@ assert(playback_pcm); assert(capture_pcm); - assert(rate > 5000 && rate < 192000); - assert(channels > 1 && channels < 512); + assert(rate >= 5000 && rate <= 192000); + assert(channels >= 1 && channels <= 512); pcms[0] = playback_pcm; pcms[1] = capture_pcm; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/pcm/pcm_softvol.c new/alsa-lib-1.1.1/src/pcm/pcm_softvol.c --- old/alsa-lib-1.1.0/src/pcm/pcm_softvol.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/pcm/pcm_softvol.c 2016-03-31 15:10:39.000000000 +0200 @@ -26,7 +26,7 @@ * */ -#include <byteswap.h> +#include "bswap.h" #include <math.h> #include "pcm_local.h" #include "pcm_plugin.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/seq/seq.c new/alsa-lib-1.1.1/src/seq/seq.c --- old/alsa-lib-1.1.0/src/seq/seq.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/seq/seq.c 2016-03-31 15:10:39.000000000 +0200 @@ -1522,6 +1522,32 @@ } /** + * \brief Get the sound card number. + * \param info client_info container + * \return card number or -1 if value is not available. + * + * Only available for SND_SEQ_KERNEL_CLIENT clients. + */ +int snd_seq_client_info_get_card(const snd_seq_client_info_t *info) +{ + assert(info); + return info->card; +} + +/** + * \brief Get the owning PID. + * \param info client_info container + * \return pid or -1 if value is not available. + * + * Only available for SND_SEQ_USER_CLIENT clients. + */ +int snd_seq_client_info_get_pid(const snd_seq_client_info_t *info) +{ + assert(info); + return info->pid; +} + +/** * \brief (DEPRECATED) Get the event filter bitmap of a client_info container * \param info client_info container * \return NULL if no event filter, or pointer to event filter bitmap diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/seq/seq_hw.c new/alsa-lib-1.1.1/src/seq/seq_hw.c --- old/alsa-lib-1.1.0/src/seq/seq_hw.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/seq/seq_hw.c 2016-03-31 15:10:39.000000000 +0200 @@ -32,10 +32,11 @@ #ifndef DOC_HIDDEN #define SNDRV_FILE_SEQ ALSA_DEVICE_DIRECTORY "seq" #define SNDRV_FILE_ALOADSEQ ALOAD_DEVICE_DIRECTORY "aloadSEQ" -#define SNDRV_SEQ_VERSION_MAX SNDRV_PROTOCOL_VERSION(1, 0, 1) +#define SNDRV_SEQ_VERSION_MAX SNDRV_PROTOCOL_VERSION(1, 0, 2) typedef struct { int fd; + int version; } snd_seq_hw_t; #endif /* DOC_HIDDEN */ @@ -100,6 +101,10 @@ /*SYSERR("SNDRV_SEQ_IOCTL_GET_CLIENT_INFO failed");*/ return -errno; } + if (hw->version < SNDRV_PROTOCOL_VERSION(1, 0, 2)) { + info->card = -1; + info->pid = -1; + } return 0; } @@ -368,6 +373,10 @@ /*SYSERR("SNDRV_SEQ_IOCTL_QUERY_NEXT_CLIENT failed");*/ return -errno; } + if (hw->version < SNDRV_PROTOCOL_VERSION(1, 0, 2)) { + info->card = -1; + info->pid = -1; + } return 0; } @@ -480,6 +489,7 @@ return -ENOMEM; } hw->fd = fd; + hw->version = ver; if (streams & SND_SEQ_OPEN_OUTPUT) { seq->obuf = (char *) malloc(seq->obufsize = SND_SEQ_OBUF_SIZE); if (!seq->obuf) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/timer/timer_hw.c new/alsa-lib-1.1.1/src/timer/timer_hw.c --- old/alsa-lib-1.1.0/src/timer/timer_hw.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/timer/timer_hw.c 2016-03-31 15:10:39.000000000 +0200 @@ -85,10 +85,12 @@ } if (sig < 0) return 0; +#ifdef F_SETSIG if (fcntl(fd, F_SETSIG, (long)sig) < 0) { SYSERR("F_SETSIG failed"); return -errno; } +#endif if (fcntl(fd, F_SETOWN, (long)pid) < 0) { SYSERR("F_SETOWN failed"); return -errno; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/topology/builder.c new/alsa-lib-1.1.1/src/topology/builder.c --- old/alsa-lib-1.1.0/src/topology/builder.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/topology/builder.c 2016-03-31 15:10:39.000000000 +0200 @@ -82,30 +82,6 @@ return bytes; } -static int write_data_block(snd_tplg_t *tplg, int size, int tplg_type, - const char *obj_name, void *data) -{ - int ret; - - /* write the header for this block */ - ret = write_block_header(tplg, tplg_type, 0, - tplg->version, 0, size, 1); - if (ret < 0) { - SNDERR("error: failed to write %s block %d\n", obj_name, ret); - return ret; - } - - verbose(tplg, " %s : write %d bytes\n", obj_name, size); - - ret = write(tplg->out_fd, data, size); - if (ret < 0) { - SNDERR("error: failed to write %s %d\n", obj_name, ret); - return ret; - } - - return 0; -} - static int write_elem_block(snd_tplg_t *tplg, struct list_head *base, int size, int tplg_type, const char *obj_name) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/topology/channel.c new/alsa-lib-1.1.1/src/topology/channel.c --- old/alsa-lib-1.1.0/src/topology/channel.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/topology/channel.c 2016-03-31 15:10:39.000000000 +0200 @@ -80,6 +80,7 @@ snd_config_t *n; struct snd_soc_tplg_channel *channel = private; const char *id, *value; + int channel_id; if (tplg->channel_idx >= SND_SOC_TPLG_MAX_CHAN) return -EINVAL; @@ -88,12 +89,13 @@ snd_config_get_id(cfg, &id); tplg_dbg("\tChannel %s at index %d\n", id, tplg->channel_idx); - channel->id = lookup_channel(id); - if (channel->id < 0) { + channel_id = lookup_channel(id); + if (channel_id < 0) { SNDERR("error: invalid channel %s\n", id); return -EINVAL; } + channel->id = channel_id; channel->size = sizeof(*channel); tplg_dbg("\tChan %s = %d\n", id, channel->id); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/topology/ctl.c new/alsa-lib-1.1.1/src/topology/ctl.c --- old/alsa-lib-1.1.0/src/topology/ctl.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/topology/ctl.c 2016-03-31 15:10:39.000000000 +0200 @@ -21,6 +21,88 @@ #define ENUM_VAL_SIZE (SNDRV_CTL_ELEM_ID_NAME_MAXLEN >> 2) +struct ctl_access_elem { + const char *name; + unsigned int value; +}; + +/* CTL access strings and codes */ +static const struct ctl_access_elem ctl_access[] = { + {"read", SNDRV_CTL_ELEM_ACCESS_READ}, + {"write", SNDRV_CTL_ELEM_ACCESS_WRITE}, + {"read_write", SNDRV_CTL_ELEM_ACCESS_READWRITE}, + {"volatile", SNDRV_CTL_ELEM_ACCESS_VOLATILE}, + {"timestamp", SNDRV_CTL_ELEM_ACCESS_TIMESTAMP}, + {"tlv_read", SNDRV_CTL_ELEM_ACCESS_TLV_READ}, + {"tlv_write", SNDRV_CTL_ELEM_ACCESS_TLV_WRITE}, + {"tlv_read_write", SNDRV_CTL_ELEM_ACCESS_TLV_READWRITE}, + {"tlv_command", SNDRV_CTL_ELEM_ACCESS_TLV_COMMAND}, + {"inactive", SNDRV_CTL_ELEM_ACCESS_INACTIVE}, + {"lock", SNDRV_CTL_ELEM_ACCESS_LOCK}, + {"owner", SNDRV_CTL_ELEM_ACCESS_OWNER}, + {"tlv_callback", SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK}, + {"user", SNDRV_CTL_ELEM_ACCESS_USER}, +}; + +/* find CTL access strings and conver to values */ +static int parse_access_values(snd_config_t *cfg, + struct snd_soc_tplg_ctl_hdr *hdr) +{ + snd_config_iterator_t i, next; + snd_config_t *n; + const char *value = NULL; + unsigned int j; + + tplg_dbg(" Access:\n"); + + snd_config_for_each(i, next, cfg) { + n = snd_config_iterator_entry(i); + + /* get value */ + if (snd_config_get_string(n, &value) < 0) + continue; + + /* match access value and set flags */ + for (j = 0; j < ARRAY_SIZE(ctl_access); j++) { + if (strcmp(value, ctl_access[j].name) == 0) { + hdr->access |= ctl_access[j].value; + tplg_dbg("\t%s\n", value); + break; + } + } + } + + return 0; +} + +/* Parse Access */ +int parse_access(snd_config_t *cfg, + struct snd_soc_tplg_ctl_hdr *hdr) +{ + snd_config_iterator_t i, next; + snd_config_t *n; + const char *id; + int err = 0; + + snd_config_for_each(i, next, cfg) { + + n = snd_config_iterator_entry(i); + if (snd_config_get_id(n, &id) < 0) + continue; + + if (strcmp(id, "access") == 0) { + err = parse_access_values(n, hdr); + if (err < 0) { + SNDERR("error: failed to parse access"); + return err; + } + continue; + } + } + + return err; +} + /* copy referenced TLV to the mixer control */ static int copy_tlv(struct tplg_elem *elem, struct tplg_elem *ref) { @@ -295,6 +377,7 @@ snd_config_t *n; const char *id, *val = NULL; int err; + bool access_set = false, tlv_set = false; elem = tplg_elem_new_common(tplg, cfg, NULL, SND_TPLG_TYPE_BYTES); if (!elem) @@ -350,7 +433,7 @@ return -EINVAL; be->max = atoi(val); - tplg_dbg("\t%s: %d\n", id, be->num_regs); + tplg_dbg("\t%s: %d\n", id, be->max); continue; } @@ -380,11 +463,42 @@ if (err < 0) return err; - be->hdr.access = SNDRV_CTL_ELEM_ACCESS_TLV_READ | - SNDRV_CTL_ELEM_ACCESS_READWRITE; + tlv_set = true; tplg_dbg("\t%s: %s\n", id, val); continue; } + + if (strcmp(id, "ops") == 0) { + err = tplg_parse_compound(tplg, n, tplg_parse_ops, + &be->hdr); + if (err < 0) + return err; + continue; + } + + if (strcmp(id, "extops") == 0) { + err = tplg_parse_compound(tplg, n, tplg_parse_ext_ops, + be); + if (err < 0) + return err; + continue; + } + + if (strcmp(id, "access") == 0) { + err = parse_access(cfg, &be->hdr); + if (err < 0) + return err; + access_set = true; + continue; + } + } + + /* set CTL access to default values if none are provided */ + if (!access_set) { + + be->hdr.access = SNDRV_CTL_ELEM_ACCESS_READWRITE; + if (tlv_set) + be->hdr.access |= SNDRV_CTL_ELEM_ACCESS_TLV_READ; } return 0; @@ -400,6 +514,7 @@ snd_config_t *n; const char *id, *val = NULL; int err, j; + bool access_set = false; elem = tplg_elem_new_common(tplg, cfg, NULL, SND_TPLG_TYPE_ENUM); if (!elem) @@ -479,6 +594,19 @@ tplg_dbg("\t%s: %s\n", id, val); continue; } + + if (strcmp(id, "access") == 0) { + err = parse_access(cfg, &ec->hdr); + if (err < 0) + return err; + access_set = true; + continue; + } + } + + /* set CTL access to default values if none are provided */ + if (!access_set) { + ec->hdr.access = SNDRV_CTL_ELEM_ACCESS_READWRITE; } return 0; @@ -497,6 +625,7 @@ snd_config_t *n; const char *id, *val = NULL; int err, j; + bool access_set = false, tlv_set = false; elem = tplg_elem_new_common(tplg, cfg, NULL, SND_TPLG_TYPE_MIXER); if (!elem) @@ -590,8 +719,7 @@ if (err < 0) return err; - mc->hdr.access = SNDRV_CTL_ELEM_ACCESS_TLV_READ | - SNDRV_CTL_ELEM_ACCESS_READWRITE; + tlv_set = true; tplg_dbg("\t%s: %s\n", id, val); continue; } @@ -604,6 +732,22 @@ tplg_dbg("\t%s: %s\n", id, val); continue; } + + if (strcmp(id, "access") == 0) { + err = parse_access(cfg, &mc->hdr); + if (err < 0) + return err; + access_set = true; + continue; + } + } + + /* set CTL access to default values if none are provided */ + if (!access_set) { + + mc->hdr.access = SNDRV_CTL_ELEM_ACCESS_READWRITE; + if (tlv_set) + mc->hdr.access |= SNDRV_CTL_ELEM_ACCESS_TLV_READ; } return 0; @@ -676,7 +820,7 @@ struct snd_soc_tplg_private *priv = mixer->priv; struct snd_soc_tplg_mixer_control *mc; struct tplg_elem *elem; - int ret, i; + int ret, i, num_channels; tplg_dbg(" Control Mixer: %s\n", mixer->hdr.name); @@ -708,9 +852,10 @@ for (i = 0; i < SND_SOC_TPLG_MAX_CHAN; i++) mc->channel[i].reg = -1; - if (mixer->map) - mc->num_channels = mixer->map->num_channels; - for (i = 0; i < mc->num_channels; i++) { + num_channels = mixer->map ? mixer->map->num_channels : 0; + mc->num_channels = num_channels; + + for (i = 0; i < num_channels; i++) { struct snd_tplg_channel_elem *channel = &mixer->map->channel[i]; mc->channel[i].size = channel->size; @@ -743,7 +888,7 @@ { struct snd_soc_tplg_enum_control *ec; struct tplg_elem *elem; - int ret, i; + int ret, i, num_items; tplg_dbg(" Control Enum: %s\n", enum_ctl->hdr.name); @@ -765,15 +910,14 @@ return ret; } - ec->items = enum_ctl->items; - if (ec->items > SND_SOC_TPLG_NUM_TEXTS) - ec->items = SND_SOC_TPLG_NUM_TEXTS; - + num_items = enum_ctl->items < SND_SOC_TPLG_NUM_TEXTS ? + enum_ctl->items : SND_SOC_TPLG_NUM_TEXTS; + ec->items = num_items; ec->mask = enum_ctl->mask; ec->count = enum_ctl->items; if (enum_ctl->texts != NULL) { - for (i = 0; i < ec->items; i++) { + for (i = 0; i < num_items; i++) { if (enum_ctl->texts[i] != NULL) strncpy(ec->texts[i], enum_ctl->texts[i], SNDRV_CTL_ELEM_ID_NAME_MAXLEN); @@ -781,7 +925,7 @@ } if (enum_ctl->values != NULL) { - for (i = 0; i < ec->items; i++) { + for (i = 0; i < num_items; i++) { if (enum_ctl->values[i]) continue; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/topology/dapm.c new/alsa-lib-1.1.1/src/topology/dapm.c --- old/alsa-lib-1.1.0/src/topology/dapm.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/topology/dapm.c 2016-03-31 15:10:39.000000000 +0200 @@ -103,6 +103,28 @@ return 0; } +static int tplg_parse_dapm_bytes(snd_config_t *cfg, struct tplg_elem *elem) +{ + snd_config_iterator_t i, next; + snd_config_t *n; + const char *value = NULL; + + tplg_dbg(" DAPM Bytes Controls: %s\n", elem->id); + + snd_config_for_each(i, next, cfg) { + n = snd_config_iterator_entry(i); + + /* get value */ + if (snd_config_get_string(n, &value) < 0) + continue; + + tplg_ref_add(elem, SND_TPLG_TYPE_BYTES, value); + tplg_dbg("\t\t %s\n", value); + } + + return 0; +} + /* move referenced controls to the widget */ static int copy_dapm_control(struct tplg_elem *elem, struct tplg_elem *ref) { @@ -564,6 +586,14 @@ if (err < 0) return err; + continue; + } + + if (strcmp(id, "bytes") == 0) { + err = tplg_parse_dapm_bytes(n, elem); + if (err < 0) + return err; + continue; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/topology/ops.c new/alsa-lib-1.1.1/src/topology/ops.c --- old/alsa-lib-1.1.0/src/topology/ops.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/topology/ops.c 2016-03-31 15:10:39.000000000 +0200 @@ -82,3 +82,41 @@ return 0; } + +/* Parse External Control operations. Ops can come from standard names above or + * bespoke driver controls with numbers >= 256 + */ +int tplg_parse_ext_ops(snd_tplg_t *tplg ATTRIBUTE_UNUSED, + snd_config_t *cfg, void *private) +{ + snd_config_iterator_t i, next; + snd_config_t *n; + struct snd_soc_tplg_bytes_control *be = private; + const char *id, *value; + + tplg_dbg("\tExt Ops\n"); + + snd_config_for_each(i, next, cfg) { + + n = snd_config_iterator_entry(i); + + /* get id */ + if (snd_config_get_id(n, &id) < 0) + continue; + + /* get value - try strings then ints */ + if (snd_config_get_string(n, &value) < 0) + continue; + + if (strcmp(id, "info") == 0) + be->ext_ops.info = lookup_ops(value); + else if (strcmp(id, "put") == 0) + be->ext_ops.put = lookup_ops(value); + else if (strcmp(id, "get") == 0) + be->ext_ops.get = lookup_ops(value); + + tplg_dbg("\t\t%s = %s\n", id, value); + } + + return 0; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/topology/parser.c new/alsa-lib-1.1.1/src/topology/parser.c --- old/alsa-lib-1.1.0/src/topology/parser.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/topology/parser.c 2016-03-31 15:10:39.000000000 +0200 @@ -16,6 +16,7 @@ Liam Girdwood <liam.r.girdw...@linux.intel.com> */ +#include <sys/stat.h> #include "list.h" #include "tplg_local.h" @@ -259,7 +260,7 @@ int err = 0; tplg->out_fd = - open(outfile, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR); + open(outfile, O_RDWR | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR); if (tplg->out_fd < 0) { SNDERR("error: failed to open %s err %d\n", outfile, -errno); @@ -327,7 +328,7 @@ int err; tplg->out_fd = - open(outfile, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR); + open(outfile, O_RDWR | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR); if (tplg->out_fd < 0) { SNDERR("error: failed to open %s err %d\n", outfile, -errno); @@ -370,10 +371,25 @@ tplg->verbose = verbose; } +static bool is_little_endian(void) +{ +#ifdef __BYTE_ORDER + #if __BYTE_ORDER == __LITTLE_ENDIAN + return true; + #endif +#endif + return false; +} + snd_tplg_t *snd_tplg_new(void) { snd_tplg_t *tplg; + if (!is_little_endian()) { + SNDERR("error: cannot support big-endian machines\n"); + return NULL; + } + tplg = calloc(1, sizeof(snd_tplg_t)); if (!tplg) return NULL; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/topology/pcm.c new/alsa-lib-1.1.1/src/topology/pcm.c --- old/alsa-lib-1.1.0/src/topology/pcm.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/topology/pcm.c 2016-03-31 15:10:39.000000000 +0200 @@ -58,7 +58,6 @@ struct tplg_elem *ref_elem = NULL; struct snd_soc_tplg_pcm *pcm; struct snd_soc_tplg_stream_caps *caps; - struct snd_soc_tplg_stream *stream; unsigned int i; pcm = elem->pcm; @@ -273,7 +272,7 @@ struct tplg_elem *elem = private; struct snd_soc_tplg_pcm *pcm; const char *id, *value; - int err, stream; + int stream; pcm = elem->pcm; @@ -384,7 +383,6 @@ snd_config_iterator_t i, next; snd_config_t *n; const char *id, *val = NULL; - int err; elem = tplg_elem_new_common(tplg, cfg, NULL, SND_TPLG_TYPE_BE); if (!elem) @@ -438,7 +436,6 @@ snd_config_iterator_t i, next; snd_config_t *n; const char *id, *val = NULL; - int err; elem = tplg_elem_new_common(tplg, cfg, NULL, SND_TPLG_TYPE_CC); if (!elem) @@ -553,7 +550,7 @@ } pcm->num_streams = pcm_tpl->num_streams; - for (i = 0; i < pcm->num_streams; i++) + for (i = 0; i < pcm_tpl->num_streams; i++) tplg_add_stream_object(&pcm->stream[i], &pcm_tpl->stream[i]); return 0; @@ -586,7 +583,7 @@ lk->id = link->id; lk->num_streams = link->num_streams; - for (i = 0; i < lk->num_streams; i++) + for (i = 0; i < link->num_streams; i++) tplg_add_stream_object(&lk->stream[i], &link->stream[i]); return 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/topology/tplg_local.h new/alsa-lib-1.1.1/src/topology/tplg_local.h --- old/alsa-lib-1.1.0/src/topology/tplg_local.h 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/topology/tplg_local.h 2016-03-31 15:10:39.000000000 +0200 @@ -12,7 +12,7 @@ #include <limits.h> #include <stdint.h> -#include <linux/types.h> +#include <stdbool.h> #include "local.h" #include "list.h" @@ -206,6 +206,8 @@ int tplg_parse_ops(snd_tplg_t *tplg ATTRIBUTE_UNUSED, snd_config_t *cfg, void *private); +int tplg_parse_ext_ops(snd_tplg_t *tplg ATTRIBUTE_UNUSED, + snd_config_t *cfg, void *private); struct tplg_elem *lookup_pcm_dai_stream(struct list_head *base, const char* id); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/src/ucm/parser.c new/alsa-lib-1.1.1/src/ucm/parser.c --- old/alsa-lib-1.1.0/src/ucm/parser.c 2015-11-09 08:39:18.000000000 +0100 +++ new/alsa-lib-1.1.1/src/ucm/parser.c 2016-03-31 15:10:39.000000000 +0200 @@ -1264,7 +1264,7 @@ "%s", env ? env : ALSA_USE_CASE_DIR); filename[MAX_FILE-1] = '\0'; -#ifdef _GNU_SOURCE +#if defined(_GNU_SOURCE) && !defined(__NetBSD__) && !defined(__FreeBSD__) && !defined(__sun) #define SORTFUNC versionsort #else #define SORTFUNC alphasort diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/alsa-lib-1.1.0/version new/alsa-lib-1.1.1/version --- old/alsa-lib-1.1.0/version 2015-11-09 08:40:17.000000000 +0100 +++ new/alsa-lib-1.1.1/version 2016-03-31 15:13:25.000000000 +0200 @@ -1 +1 @@ -1.1.0 +1.1.1