Messages in this thread Patch in this message | | | Date | Sat, 27 Dec 2003 16:27:11 -0800 | From | "Martin J. Bligh" <> | Subject | Re: OSS sound emulation broken between 2.6.0-test2 and test3 |
| |
OK, I chose to just back out the wholefrag stuff - it doesn't seem to work. Presumably someone from the ALSA project will come up with a better fix than this, if not, I'll send this upstream. This should just fix it, without the need to do other stuff in userspace to work around it ... at least it does for me.
This is the way the world was in -test2, and maybe it should have stayed like that - the new feature seems to me to default wholefrag off, where it was on before. Patch is also in 2.6.0-mjb2, which I'll release in a bit.
M.
diff -urpN -X /home/fletch/.diff.exclude 610-alsa_100rc2/include/sound/pcm_oss.h 620-force_wholefrag/include/sound/pcm_oss.h --- 610-alsa_100rc2/include/sound/pcm_oss.h Mon Nov 17 18:29:43 2003 +++ 620-force_wholefrag/include/sound/pcm_oss.h Sat Dec 27 14:50:15 2003 @@ -31,7 +31,6 @@ struct _snd_pcm_oss_setup { direct:1, block:1, nonblock:1, - wholefrag:1, nosilence:1; unsigned int periods; unsigned int period_size; diff -urpN -X /home/fletch/.diff.exclude 610-alsa_100rc2/sound/core/oss/pcm_oss.c 620-force_wholefrag/sound/core/oss/pcm_oss.c --- 610-alsa_100rc2/sound/core/oss/pcm_oss.c Sat Dec 27 14:50:08 2003 +++ 620-force_wholefrag/sound/core/oss/pcm_oss.c Sat Dec 27 14:50:15 2003 @@ -814,9 +814,8 @@ static ssize_t snd_pcm_oss_write1(snd_pc buf += tmp; bytes -= tmp; xfer += tmp; - if (substream->oss.setup == NULL || !substream->oss.setup->wholefrag || - runtime->oss.buffer_used == runtime->oss.period_bytes) { - tmp = snd_pcm_oss_write2(substream, runtime->oss.buffer, runtime->oss.buffer_used, 1); + if (runtime->oss.buffer_used == runtime->oss.period_bytes) { + tmp = snd_pcm_oss_write2(substream, runtime->oss.buffer, runtime->oss.period_bytes, 1); if (tmp <= 0) return xfer > 0 ? (snd_pcm_sframes_t)xfer : tmp; runtime->oss.bytes += tmp; @@ -2195,7 +2194,7 @@ static void snd_pcm_oss_proc_read(snd_in snd_pcm_oss_setup_t *setup = pstr->oss.setup_list; down(&pstr->oss.setup_mutex); while (setup) { - snd_iprintf(buffer, "%s %u %u%s%s%s%s%s%s\n", + snd_iprintf(buffer, "%s %u %u%s%s%s%s%s\n", setup->task_name, setup->periods, setup->period_size, @@ -2203,7 +2202,6 @@ static void snd_pcm_oss_proc_read(snd_in setup->direct ? " direct" : "", setup->block ? " block" : "", setup->nonblock ? " non-block" : "", - setup->wholefrag ? " whole-frag" : "", setup->nosilence ? " no-silence" : ""); setup = setup->next; } @@ -2270,8 +2268,6 @@ static void snd_pcm_oss_proc_write(snd_i template.block = 1; } else if (!strcmp(str, "non-block")) { template.nonblock = 1; - } else if (!strcmp(str, "whole-frag")) { - template.wholefrag = 1; } else if (!strcmp(str, "no-silence")) { template.nosilence = 1; }
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |