Hello community, here is the log from the commit of package alsa checked in at Fri Mar 31 15:28:18 CEST 2006. -------- --- alsa/alsa.changes 2006-03-24 19:04:17.000000000 +0100 +++ alsa/alsa.changes 2006-03-29 12:17:49.000000000 +0200 @@ -1,0 +2,7 @@ +Wed Mar 29 12:15:16 CEST 2006 - tiwai@suse.de + +- fix the bogus -EPIPE detection (and thus may lead to hang up) + in 32bit compat mode (ALSA bug#1938). +- correct a typo in the help text of speaker-test + +------------------------------------------------------------------- New: ---- alsa-lib-32bit-compat-fix.diff alsa-lib-applptr-sync-fix.diff ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ alsa.spec ++++++ --- /var/tmp/diff_new_pack.1pV27R/_old 2006-03-31 15:25:30.000000000 +0200 +++ /var/tmp/diff_new_pack.1pV27R/_new 2006-03-31 15:25:30.000000000 +0200 @@ -21,7 +21,7 @@ Autoreqprov: on Summary: Advanced Linux Sound Architecture Version: 1.0.11 -Release: 20 +Release: 21 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 @@ -69,6 +69,8 @@ Patch31: alsa-lib-pcm-timer-size-hack.diff Patch32: alsa-lib-dmix-generic-fix.diff Patch33: alsa-lib-dmix-2-periods-fix.diff +Patch34: alsa-lib-32bit-compat-fix.diff +Patch35: alsa-lib-applptr-sync-fix.diff Patch50: alsa-utils-speaker-test-5.1-fix.diff Patch51: alsa-utils-speaker-test-buffer-fix.diff Patch52: alsa-utils-alsaconf-lspci-fix.diff @@ -151,6 +153,8 @@ %patch31 -p1 %patch32 -p1 %patch33 -p1 +%patch34 -p1 +%patch35 -p1 cd .. cd alsa-utils*/. # %patch2 -p1 @@ -434,6 +438,10 @@ %doc alsa-lib*/doc/doxygen/html/* %changelog -n alsa +* Wed Mar 29 2006 - tiwai@suse.de +- fix the bogus -EPIPE detection (and thus may lead to hang up) + in 32bit compat mode (ALSA bug#1938). +- correct a typo in the help text of speaker-test * Fri Mar 24 2006 - tiwai@suse.de - fix the endless poll() loop without starting PCM - fix the noisy output and xrun from dmix with 2 periods ++++++ alsa-lib-32bit-compat-fix.diff ++++++ Index: alsa-lib/src/pcm/pcm_hw.c =================================================================== RCS file: /home/iwai/cvs/alsa/alsa-lib/src/pcm/pcm_hw.c,v retrieving revision 1.113 retrieving revision 1.114 diff -u -r1.113 -r1.114 --- alsa-lib/src/pcm/pcm_hw.c 20 Mar 2006 11:15:55 -0000 1.113 +++ alsa-lib/src/pcm/pcm_hw.c 29 Mar 2006 09:30:49 -0000 1.114 @@ -942,6 +942,7 @@ } } snd_pcm_mmap_appl_forward(pcm, size); + sync_ptr(hw, 0); #ifdef DEBUG_MMAP fprintf(stderr, "appl_forward: hw_ptr = %li, appl_ptr = %li, size = %li\n", *pcm->hw.ptr, *pcm->appl.ptr, size); #endif Index: alsa-lib/src/pcm/pcm_plugin.c =================================================================== RCS file: /home/iwai/cvs/alsa/alsa-lib/src/pcm/pcm_plugin.c,v retrieving revision 1.52 retrieving revision 1.54 diff -u -r1.52 -r1.54 --- alsa-lib/src/pcm/pcm_plugin.c 22 May 2005 18:06:44 -0000 1.52 +++ alsa-lib/src/pcm/pcm_plugin.c 29 Mar 2006 09:34:15 -0000 1.54 @@ -137,7 +137,7 @@ snd_atomic_write_init(&plugin->watom); } -int snd_pcm_plugin_delay(snd_pcm_t *pcm, snd_pcm_sframes_t *delayp) +static int snd_pcm_plugin_delay(snd_pcm_t *pcm, snd_pcm_sframes_t *delayp) { snd_pcm_plugin_t *plugin = pcm->private_data; snd_pcm_sframes_t sd; @@ -150,7 +150,7 @@ return 0; } -int snd_pcm_plugin_prepare(snd_pcm_t *pcm) +static int snd_pcm_plugin_prepare(snd_pcm_t *pcm) { snd_pcm_plugin_t *plugin = pcm->private_data; int err; @@ -192,7 +192,7 @@ return 0; } -snd_pcm_sframes_t snd_pcm_plugin_rewind(snd_pcm_t *pcm, snd_pcm_uframes_t frames) +static snd_pcm_sframes_t snd_pcm_plugin_rewind(snd_pcm_t *pcm, snd_pcm_uframes_t frames) { snd_pcm_plugin_t *plugin = pcm->private_data; snd_pcm_sframes_t n = snd_pcm_mmap_hw_avail(pcm); @@ -221,7 +221,7 @@ return n; } -snd_pcm_sframes_t snd_pcm_plugin_forward(snd_pcm_t *pcm, snd_pcm_uframes_t frames) +static snd_pcm_sframes_t snd_pcm_plugin_forward(snd_pcm_t *pcm, snd_pcm_uframes_t frames) { snd_pcm_plugin_t *plugin = pcm->private_data; snd_pcm_sframes_t n = snd_pcm_mmap_avail(pcm); @@ -345,7 +345,8 @@ } -snd_pcm_sframes_t snd_pcm_plugin_writei(snd_pcm_t *pcm, const void *buffer, snd_pcm_uframes_t size) +static snd_pcm_sframes_t +snd_pcm_plugin_writei(snd_pcm_t *pcm, const void *buffer, snd_pcm_uframes_t size) { snd_pcm_channel_area_t areas[pcm->channels]; snd_pcm_areas_from_buf(pcm, areas, (void*)buffer); @@ -353,7 +354,8 @@ snd_pcm_plugin_write_areas); } -snd_pcm_sframes_t snd_pcm_plugin_writen(snd_pcm_t *pcm, void **bufs, snd_pcm_uframes_t size) +static snd_pcm_sframes_t +snd_pcm_plugin_writen(snd_pcm_t *pcm, void **bufs, snd_pcm_uframes_t size) { snd_pcm_channel_area_t areas[pcm->channels]; snd_pcm_areas_from_bufs(pcm, areas, bufs); @@ -361,7 +363,8 @@ snd_pcm_plugin_write_areas); } -snd_pcm_sframes_t snd_pcm_plugin_readi(snd_pcm_t *pcm, void *buffer, snd_pcm_uframes_t size) +static snd_pcm_sframes_t +snd_pcm_plugin_readi(snd_pcm_t *pcm, void *buffer, snd_pcm_uframes_t size) { snd_pcm_channel_area_t areas[pcm->channels]; snd_pcm_areas_from_buf(pcm, areas, buffer); @@ -369,7 +372,8 @@ snd_pcm_plugin_read_areas); } -snd_pcm_sframes_t snd_pcm_plugin_readn(snd_pcm_t *pcm, void **bufs, snd_pcm_uframes_t size) +static snd_pcm_sframes_t +snd_pcm_plugin_readn(snd_pcm_t *pcm, void **bufs, snd_pcm_uframes_t size) { snd_pcm_channel_area_t areas[pcm->channels]; snd_pcm_areas_from_bufs(pcm, areas, bufs); @@ -377,9 +381,10 @@ snd_pcm_plugin_read_areas); } -snd_pcm_sframes_t snd_pcm_plugin_mmap_commit(snd_pcm_t *pcm, - snd_pcm_uframes_t offset ATTRIBUTE_UNUSED, - snd_pcm_uframes_t size) +static snd_pcm_sframes_t +snd_pcm_plugin_mmap_commit(snd_pcm_t *pcm, + snd_pcm_uframes_t offset ATTRIBUTE_UNUSED, + snd_pcm_uframes_t size) { snd_pcm_plugin_t *plugin = pcm->private_data; snd_pcm_t *slave = plugin->gen.slave; @@ -445,7 +450,7 @@ return xfer; } -snd_pcm_sframes_t snd_pcm_plugin_avail_update(snd_pcm_t *pcm) +static snd_pcm_sframes_t snd_pcm_plugin_avail_update(snd_pcm_t *pcm) { snd_pcm_plugin_t *plugin = pcm->private_data; snd_pcm_t *slave = plugin->gen.slave; @@ -516,7 +521,7 @@ } } -int snd_pcm_plugin_status(snd_pcm_t *pcm, snd_pcm_status_t * status) +static int snd_pcm_plugin_status(snd_pcm_t *pcm, snd_pcm_status_t * status) { snd_pcm_plugin_t *plugin = pcm->private_data; snd_pcm_sframes_t err; @@ -524,6 +529,9 @@ snd_atomic_read_init(&ratom, &plugin->watom); _again: snd_atomic_read_begin(&ratom); + /* sync with the latest hw and appl ptrs */ + snd_pcm_plugin_avail_update(pcm); + err = snd_pcm_status(plugin->gen.slave, status); if (err < 0) { snd_atomic_read_ok(&ratom); @@ -545,7 +553,7 @@ } snd_pcm_fast_ops_t snd_pcm_plugin_fast_ops = { - .status = snd_pcm_generic_status, + .status = snd_pcm_plugin_status, .state = snd_pcm_generic_state, .hwsync = snd_pcm_generic_hwsync, .delay = snd_pcm_plugin_delay, Index: alsa-lib/src/pcm/pcm_plugin.h =================================================================== RCS file: /home/iwai/cvs/alsa/alsa-lib/src/pcm/pcm_plugin.h,v retrieving revision 1.32 retrieving revision 1.33 diff -u -r1.32 -r1.33 --- alsa-lib/src/pcm/pcm_plugin.h 20 Jan 2005 17:38:12 -0000 1.32 +++ alsa-lib/src/pcm/pcm_plugin.h 29 Mar 2006 09:34:15 -0000 1.33 @@ -52,16 +52,6 @@ } snd_pcm_plugin_t; void snd_pcm_plugin_init(snd_pcm_plugin_t *plugin); -int snd_pcm_plugin_status(snd_pcm_t *pcm, snd_pcm_status_t * status); -int snd_pcm_plugin_delay(snd_pcm_t *pcm, snd_pcm_sframes_t *delayp); -int snd_pcm_plugin_prepare(snd_pcm_t *pcm); -snd_pcm_sframes_t snd_pcm_plugin_rewind(snd_pcm_t *pcm, snd_pcm_uframes_t frames); -snd_pcm_sframes_t snd_pcm_plugin_writei(snd_pcm_t *pcm, const void *buffer, snd_pcm_uframes_t size); -snd_pcm_sframes_t snd_pcm_plugin_writen(snd_pcm_t *pcm, void **bufs, snd_pcm_uframes_t size); -snd_pcm_sframes_t snd_pcm_plugin_readi(snd_pcm_t *pcm, void *buffer, snd_pcm_uframes_t size); -snd_pcm_sframes_t snd_pcm_plugin_readn(snd_pcm_t *pcm, void **bufs, snd_pcm_uframes_t size); -snd_pcm_sframes_t snd_pcm_plugin_mmap_commit(snd_pcm_t *pcm, snd_pcm_uframes_t offset, snd_pcm_uframes_t size); -snd_pcm_sframes_t snd_pcm_plugin_avail_update(snd_pcm_t *pcm); extern snd_pcm_fast_ops_t snd_pcm_plugin_fast_ops; Index: alsa-lib/src/pcm/pcm_rate.c =================================================================== RCS file: /home/iwai/cvs/alsa/alsa-lib/src/pcm/pcm_rate.c,v retrieving revision 1.85 retrieving revision 1.86 diff -u -r1.85 -r1.86 --- alsa-lib/src/pcm/pcm_rate.c 17 Mar 2006 18:03:44 -0000 1.85 +++ alsa-lib/src/pcm/pcm_rate.c 29 Mar 2006 09:33:00 -0000 1.86 @@ -1060,10 +1060,12 @@ result = snd_pcm_mmap_begin(rate->gen.slave, &slave_areas, &slave_offset, &slave_frames); if (result < 0) return result; +#if 0 if (slave_offset) { SNDERR("non-zero slave_offset %ld", slave_offset); return -EIO; } +#endif snd_pcm_areas_copy(slave_areas, slave_offset, rate->sareas, xfer, pcm->channels, cont, @@ -1151,10 +1153,12 @@ result = snd_pcm_mmap_begin(rate->gen.slave, &slave_areas, &slave_offset, &slave_frames); if (result < 0) return result; +#if 0 if (slave_offset) { SNDERR("non-zero slave_offset %ld", slave_offset); return -EIO; } +#endif snd_pcm_areas_copy(rate->sareas, xfer, slave_areas, slave_offset, pcm->channels, cont, ++++++ alsa-lib-applptr-sync-fix.diff ++++++ Index: alsa-lib/src/pcm/pcm_hw.c =================================================================== RCS file: /home/iwai/cvs/alsa/alsa-lib/src/pcm/pcm_hw.c,v retrieving revision 1.114 diff -u -r1.114 pcm_hw.c --- alsa-lib/src/pcm/pcm_hw.c 29 Mar 2006 09:30:49 -0000 1.114 +++ alsa-lib/src/pcm/pcm_hw.c 31 Mar 2006 10:04:17 -0000 @@ -624,6 +624,9 @@ SYSMSG("SNDRV_PCM_IOCTL_REWIND failed"); return err; } + err = sync_ptr(hw, SNDRV_PCM_SYNC_PTR_APPL); + if (err < 0) + return err; return frames; } @@ -637,6 +640,9 @@ SYSMSG("SNDRV_PCM_IOCTL_FORWARD failed"); return err; } + err = sync_ptr(hw, SNDRV_PCM_SYNC_PTR_APPL); + if (err < 0) + return err; return frames; } else { snd_pcm_sframes_t avail; Index: alsa-lib/src/pcm/pcm_multi.c =================================================================== RCS file: /home/iwai/cvs/alsa/alsa-lib/src/pcm/pcm_multi.c,v retrieving revision 1.72 diff -u -r1.72 pcm_multi.c --- alsa-lib/src/pcm/pcm_multi.c 27 Feb 2006 12:39:29 -0000 1.72 +++ alsa-lib/src/pcm/pcm_multi.c 31 Mar 2006 10:04:17 -0000 @@ -424,8 +424,9 @@ int err = 0; unsigned int i; for (i = 0; i < multi->slaves_count; ++i) { - if (multi->slaves[i].linked) - continue; + /* We call prepare to each slave even if it's linked. + * This is to make sure to sync non-mmaped control/status. + */ err = snd_pcm_prepare(multi->slaves[i].pcm); if (err < 0) return err; @@ -439,8 +440,7 @@ int err = 0; unsigned int i; for (i = 0; i < multi->slaves_count; ++i) { - if (multi->slaves[i].linked) - continue; + /* Reset each slave, as well as in prepare */ err = snd_pcm_reset(multi->slaves[i].pcm); if (err < 0) return err; ++++++ alsa-utils-speaker-test-buffer-fix.diff ++++++ --- /var/tmp/diff_new_pack.1pV27R/_old 2006-03-31 15:25:31.000000000 +0200 +++ /var/tmp/diff_new_pack.1pV27R/_new 2006-03-31 15:25:31.000000000 +0200 @@ -303,7 +303,7 @@ + "-P,--nperiods number of periods\n" "-t,--test pink=use pink noise, sine=use sine wave, wav=WAV file\n" - "-s,--speaker single speaker test. Values 1=Left or 2=right\n" -+ "-n,--nloops specify number of loops to test, 0 = infinite\n" ++ "-l,--nloops specify number of loops to test, 0 = infinite\n" + "-s,--speaker single speaker test. Values 1=Left, 2=right, etc\n" "-w,--wavfile Use the given WAV file as a test sound\n" "-W,--wavdir Specify the directory containing WAV files\n" ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun...
participants (1)
-
root@suse.de