Hello community,
here is the log from the commit of package alsa
checked in at Wed Jul 5 14:33:10 CEST 2006.
--------
--- alsa/alsa.changes 2006-06-20 15:55:47.000000000 +0200
+++ alsa/alsa.changes 2006-07-04 16:50:18.000000000 +0200
@@ -1,0 +2,11 @@
+Tue Jul 4 16:46:21 CEST 2006 - tiwai@suse.de
+
+- updated to version 1.0.12rc1:
+ * fix card configurations for ice1724 boards
+ * fix division-by-zero in alsa-lib
+ * initialize fully the slave PCM in dmix/dsnoop
+ * fix segfault with invalid bonding parameter in dmix
+ * fix manpages
+ * improved output of amidi -l
+
+-------------------------------------------------------------------
Old:
----
alsa-lib-1.0.11.tar.bz2
alsa-utils-1.0.11.tar.bz2
New:
----
alsa-lib-1.0.12rc1.tar.bz2
alsa-utils-1.0.12rc1.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ alsa.spec ++++++
--- /var/tmp/diff_new_pack.lKvZvD/_old 2006-07-05 14:32:28.000000000 +0200
+++ /var/tmp/diff_new_pack.lKvZvD/_new 2006-07-05 14:32:28.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package alsa (Version 1.0.11)
+# spec file for package alsa (Version 1.0.12)
#
# Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@@ -12,7 +12,7 @@
Name: alsa
BuildRequires: doxygen resmgr
-%define package_version 1.0.11
+%define package_version 1.0.12rc1
License: GPL
Group: System/Libraries
Provides: alsa-lib alsa-utils alsa-conf
@@ -20,11 +20,12 @@
PreReq: %insserv_prereq %fillup_prereq
Autoreqprov: on
Summary: Advanced Linux Sound Architecture
-Version: 1.0.11
-Release: 35
+Version: 1.0.12
+Release: 1
Source1: ftp://ftp.alsa-project.org/pub/lib/alsa-lib-%{package_version}.tar.bz2
Source2: ftp://ftp.alsa-project.org/pub/util/alsa-utils-%{package_version}.tar.bz2
-Source5: ftp://ftp.alsa-project.org/pub/oss/alsa-oss-%{package_version}.tar.bz2
+# Source5: ftp://ftp.alsa-project.org/pub/oss/alsa-oss-%{package_version}.tar.bz2
+Source5: ftp://ftp.alsa-project.org/pub/oss/alsa-oss-1.0.11.tar.bz2
Source6: udev-soundfont
Source7: load-soundfont
Source8: 40-alsa.rules
@@ -377,6 +378,14 @@
%doc alsa-lib*/doc/doxygen/html/*
%changelog -n alsa
+* Tue Jul 04 2006 - tiwai@suse.de
+- updated to version 1.0.12rc1:
+ * fix card configurations for ice1724 boards
+ * fix division-by-zero in alsa-lib
+ * initialize fully the slave PCM in dmix/dsnoop
+ * fix segfault with invalid bonding parameter in dmix
+ * fix manpages
+ * improved output of amidi -l
* Tue Jun 20 2006 - dmueller@suse.de
- build parallel
* Mon May 29 2006 - tiwai@suse.de
++++++ alsa-lib-hg-fixes.diff ++++++
++++ 1627 lines (skipped)
++++ between alsa/alsa-lib-hg-fixes.diff
++++ and alsa/alsa-lib-hg-fixes.diff
++++++ alsa-utils-hg-fixes.diff ++++++
--- /var/tmp/diff_new_pack.lKvZvD/_old 2006-07-05 14:32:29.000000000 +0200
+++ /var/tmp/diff_new_pack.lKvZvD/_new 2006-07-05 14:32:29.000000000 +0200
@@ -1,299 +1,177 @@
-diff -r 420590283171 INSTALL
---- a/INSTALL Wed Apr 19 12:29:49 2006 +0200
-+++ b/INSTALL Wed May 17 15:01:37 2006 +0200
-@@ -24,11 +24,11 @@ header file asoundlib.h in $prefix/inclu
- header file asoundlib.h in $prefix/include/alsa directory (usually in
- /usr/include/alsa directory).
-
--Compilation from CVS sources
------------------------------
-+Compilation from HG sources
-+---------------------------
-
- You need also GNU packages autoconf and automake installed in your system
--to compile CVS sources of alsa-utils package.
-+to compile HG (Mercurial) sources of alsa-utils package.
-
- For compilation you can use these commands:
-
-@@ -40,7 +40,7 @@ For compilation you can use these comman
- ./configure
- make
-
--The included cvscompile script does this job for you.
-+The included hgcompile script does this job for you.
-
- Note: Some automake packages have missing aclocal program. Use newer version
- in the case.
-diff -r 420590283171 aplay/aplay.c
---- a/aplay/aplay.c Wed Apr 19 12:29:49 2006 +0200
-+++ b/aplay/aplay.c Wed May 17 15:01:37 2006 +0200
-@@ -126,9 +126,10 @@ struct fmt_capture {
- char *what;
- long long max_filesize;
- } fmt_rec_table[] = {
-- { NULL, end_raw, N_("raw data"), LLONG_MAX },
-- { begin_voc, end_voc, N_("VOC"), 16000000 },
-- { begin_wave, end_wave, N_("WAVE"), 2000000000 },
-+ { NULL, NULL, N_("raw data"), LLONG_MAX },
-+ { begin_voc, end_voc, N_("VOC"), 16000000LL },
-+ /* FIXME: can WAV handle exactly 2GB or less than it? */
-+ { begin_wave, end_wave, N_("WAVE"), 2147483648LL },
- { begin_au, end_au, N_("Sparc Audio"), LLONG_MAX }
- };
-
-@@ -1882,12 +1883,6 @@ static void end_voc(int fd)
- close(fd);
- }
-
--static void end_raw(int fd)
--{ /* REALLY only close output */
-- if (fd != 1)
-- close(fd);
--}
--
- static void end_wave(int fd)
- { /* only close output */
- WaveChunkHeader cd;
-@@ -2053,26 +2048,62 @@ static void playback(char *name)
- close(fd);
+diff -r 849c4951f99f amidi/amidi.1
+--- a/amidi/amidi.1 Wed Jun 21 15:50:44 2006 +0200
++++ b/amidi/amidi.1 Tue Jul 04 16:50:25 2006 +0200
+@@ -1,4 +1,4 @@
+-.TH AMIDI 1 "15 Feb 2005"
++.TH AMIDI 1 "26 Jun 2006"
+
+ .SH NAME
+ amidi \- read from and write to ALSA RawMIDI ports
+@@ -146,11 +146,6 @@ system-wide rawmidi definitions
+ .I ~/.asoundrc
+ user specific rawmidi definitions
+
+-.SH BUGS
+-The
+-.I \-\-list\-devices
+-option pretends that output and input ports are the same.
+-
+ .SH SEE ALSO
+ aplaymidi(1)
+ .br
+diff -r 849c4951f99f amidi/amidi.c
+--- a/amidi/amidi.c Wed Jun 21 15:50:44 2006 +0200
++++ b/amidi/amidi.c Tue Jul 04 16:50:25 2006 +0200
+@@ -95,56 +95,120 @@ static void *my_malloc(size_t size)
+ return p;
}
--static void capture(char *name_)
-+static int new_capture_file(char *name, char *namebuf, size_t namelen,
-+ int filecount)
++static int is_input(snd_ctl_t *ctl, int card, int device, int sub)
+{
-+ /* get a copy of the original filename */
-+ char *s;
-+ char buf[PATH_MAX+1];
-+
-+ strncpy(buf, name, sizeof(buf));
-+
-+ /* separate extension from filename */
-+ s = buf + strlen(buf);
-+ while (s > buf && *s != '.' && *s != '/')
-+ --s;
-+ if (*s == '.')
-+ *s++ = 0;
-+ else if (*s == '/')
-+ s = buf + strlen(buf);
-+
-+ /* upon first jump to this if block rename the first file */
-+ if (filecount == 1) {
-+ if (*s)
-+ snprintf(namebuf, namelen, "%s-01.%s", buf, s);
-+ else
-+ snprintf(namebuf, namelen, "%s-01", buf);
-+ remove(namebuf);
-+ rename(name, namebuf);
-+ filecount = 2;
-+ }
-+
-+ /* name of the current file */
-+ if (*s)
-+ snprintf(namebuf, namelen, "%s-%02i.%s", buf, filecount, s);
-+ else
-+ snprintf(namebuf, namelen, "%s-%02i", buf, filecount);
++ snd_rawmidi_info_t *info;
++ int err;
+
-+ return filecount;
++ snd_rawmidi_info_alloca(&info);
++ snd_rawmidi_info_set_device(info, device);
++ snd_rawmidi_info_set_subdevice(info, sub);
++ snd_rawmidi_info_set_stream(info, SND_RAWMIDI_STREAM_INPUT);
++
++ if ((err = snd_ctl_rawmidi_info(ctl, info)) < 0 && err != -ENXIO)
++ return err;
++ else if (err == 0)
++ return 1;
++
++ return 0;
++}
++
++static int is_output(snd_ctl_t *ctl, int card, int device, int sub)
++{
++ snd_rawmidi_info_t *info;
++ int err;
++
++ snd_rawmidi_info_alloca(&info);
++ snd_rawmidi_info_set_device(info, device);
++ snd_rawmidi_info_set_subdevice(info, sub);
++ snd_rawmidi_info_set_stream(info, SND_RAWMIDI_STREAM_OUTPUT);
++
++ if ((err = snd_ctl_rawmidi_info(ctl, info)) < 0 && err != -ENXIO)
++ return err;
++ else if (err == 0)
++ return 1;
++
++ return 0;
+}
+
-+static void capture(char *orig_name)
+ static void list_device(snd_ctl_t *ctl, int card, int device)
{
- int tostdout=0; /* boolean which describes output stream */
- int filecount=0; /* number of files written */
-- char *name=name_; /* current filename */
-+ char *name = orig_name; /* current filename */
- char namebuf[PATH_MAX+1];
-- off64_t cur; /* number of bytes to capture */
-+ off64_t count, rest; /* number of bytes to capture */
-
- /* get number of bytes to capture */
-- pbrec_count = calc_count();
-+ count = calc_count();
-+ if (count == 0)
-+ count = LLONG_MAX;
- /* WAVE-file should be even (I'm not sure), but wasting one byte
- isn't a problem (this can only be in 8 bit mono) */
-- if (pbrec_count < LLONG_MAX)
-- pbrec_count += pbrec_count % 2;
-+ if (count < LLONG_MAX)
-+ count += count % 2;
- else
-- pbrec_count -= pbrec_count % 2;
-- if (pbrec_count == 0)
-- pbrec_count -= 2;
--
-- cur = pbrec_count;
-+ count -= count % 2;
-
- /* display verbose output to console */
- header(file_type, name);
-@@ -2085,93 +2116,63 @@ static void capture(char *name_)
- fd = fileno(stdout);
- name = "stdout";
- tostdout=1;
-- fdcount = 0;
- }
-
- do {
- /* open a file to write */
- if(!tostdout) {
--
- /* upon the second file we start the numbering scheme */
-- if(filecount)
-- {
-- /* get a copy of the original filename */
-- char *s;
-- char buf[PATH_MAX+1];
-- strncpy(buf, name_, sizeof(buf));
--
-- /* separate extension from filename */
-- s=buf+strlen(buf);
-- while(s>buf && *s!='.' && *s!='/')
-- --s;
-- if(*s=='.')
-- *s++=0;
-- else if(*s=='/')
-- s=buf+strlen(buf);
--
-- /* upon first jump to this if block rename the first file */
-- if(filecount==1) {
-- if(*s)
-- snprintf(namebuf, sizeof(namebuf), "%s-01.%s", buf, s);
-- else
-- snprintf(namebuf, sizeof(namebuf), "%s-01", buf);
-- remove(namebuf);
-- rename(name, namebuf);
-- filecount=2;
-- }
--
-- /* name of the current file */
-- if(*s)
-- snprintf(namebuf, sizeof(namebuf), "%s-%02i.%s", buf, filecount, s);
-- else
-- snprintf(namebuf, sizeof(namebuf), "%s-%02i", buf, filecount);
-- name=namebuf;
--
-+ if (filecount) {
-+ filecount = new_capture_file(orig_name, namebuf,
-+ sizeof(namebuf),
-+ filecount);
-+ name = namebuf;
- }
--
-+
- /* open a new file */
- remove(name);
- if ((fd = open64(name, O_WRONLY | O_CREAT, 0644)) == -1) {
- perror(name);
- exit(EXIT_FAILURE);
- }
-- fdcount = 0;
- filecount++;
+ snd_rawmidi_info_t *info;
+ const char *name;
+ const char *sub_name;
+- int subs;
++ int subs, subs_in, subs_out;
++ int sub, in, out;
+ int err;
+
+ snd_rawmidi_info_alloca(&info);
+ snd_rawmidi_info_set_device(info, device);
+- snd_rawmidi_info_set_subdevice(info, 0);
++
++ snd_rawmidi_info_set_stream(info, SND_RAWMIDI_STREAM_INPUT);
++ snd_ctl_rawmidi_info(ctl, info);
++ subs_in = snd_rawmidi_info_get_subdevices_count(info);
+ snd_rawmidi_info_set_stream(info, SND_RAWMIDI_STREAM_OUTPUT);
+- if ((err = snd_ctl_rawmidi_info(ctl, info)) < 0 &&
+- err != -ENOENT) {
++ snd_ctl_rawmidi_info(ctl, info);
++ subs_out = snd_rawmidi_info_get_subdevices_count(info);
++ subs = subs_in > subs_out ? subs_in : subs_out;
++
++ sub = 0;
++ in = out = 0;
++ if ((err = is_output(ctl, card, device, sub)) < 0) {
+ error("cannot get rawmidi information %d:%d: %s",
+ card, device, snd_strerror(err));
+ return;
+- }
+- if (err == -ENOENT) {
+- snd_rawmidi_info_set_stream(info, SND_RAWMIDI_STREAM_INPUT);
+- if ((err = snd_ctl_rawmidi_info(ctl, info)) < 0 &&
+- err != -ENOENT) {
++ } else if (err)
++ out = 1;
++
++ if (err == 0) {
++ if ((err = is_input(ctl, card, device, sub)) < 0) {
+ error("cannot get rawmidi information %d:%d: %s",
+ card, device, snd_strerror(err));
+ return;
}
-+
-+ rest = count;
-+ if (rest > fmt_rec_table[file_type].max_filesize)
-+ rest = fmt_rec_table[file_type].max_filesize;
-
- /* setup sample header */
- if (fmt_rec_table[file_type].start)
-- fmt_rec_table[file_type].start(fd, pbrec_count);
-+ fmt_rec_table[file_type].start(fd, rest);
-
- /* capture */
-- do {
-- ssize_t r=0;
-- for (; cur > 0 && fdcount