Update of /cvsroot/alsa/alsa-oss/alsa
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15780

Modified Files:
        pcm.c 
Log Message:
Added hwset flag and changed mmap_commit check code

Index: pcm.c
===================================================================
RCS file: /cvsroot/alsa/alsa-oss/alsa/pcm.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- pcm.c       26 Feb 2004 15:31:46 -0000      1.9
+++ pcm.c       27 Feb 2004 16:16:58 -0000      1.10
@@ -71,6 +71,7 @@
 } oss_dsp_stream_t;
 
 typedef struct {
+       int hwset;
        unsigned int channels;
        unsigned int rate;
        unsigned int oss_format;
@@ -391,9 +392,11 @@
 static int oss_dsp_params(oss_dsp_t *dsp)
 {
        int err;
+       dsp->hwset = 0;
        err = oss_dsp_hw_params(dsp);
        if (err < 0) 
                return err;
+       dsp->hwset = 1;
        err = oss_dsp_sw_params(dsp);
        if (err < 0) 
                return err;
@@ -725,11 +728,10 @@
                                           dsp->channels, frames,
                                           dsp->format);
                        err = snd_pcm_mmap_commit(pcm, ofs, frames);
-                       assert(err == (snd_pcm_sframes_t) frames);
                        if (err < 0)
                                break;
-                       size -= frames;
-                       str->alsa.appl_ptr += frames;
+                       size -= err;
+                       str->alsa.appl_ptr += err;
                        str->alsa.appl_ptr %= str->alsa.boundary;
                }
                break;
@@ -764,6 +766,10 @@
        {
                int k;
                DEBUG("SNDCTL_DSP_RESET)\n");
+               if (!dsp->hwset) {
+                       errno = -EIO;
+                       return -1;
+               }
                result = 0;
                for (k = 0; k < 2; ++k) {
                        str = &dsp->streams[k];
@@ -787,6 +793,10 @@
        {
                int k;
                DEBUG("SNDCTL_DSP_SYNC)\n");
+               if (!dsp->hwset) {
+                       errno = -EIO;
+                       return -1;
+               }
                result = 0;
                for (k = 0; k < 2; ++k) {
                        str = &dsp->streams[k];



-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click
_______________________________________________
Alsa-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-cvslog

Reply via email to