Ignore:
Timestamp:
Sep 9, 2001, 5:31:35 PM (24 years ago)
Author:
sandervl
Message:

joystick reactivated; version increase; Rudi's fixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sbliveos2/trunk/drv16/wavestrm.cpp

    r178 r188  
    165165                //underrun: stop playback
    166166                dprintf(("underrun: stop playback"));
    167                 pahw->Stop(this);
     167                pahw->Stop(this);
    168168                fUnderrun = TRUE;
    169169                return;
     
    171171        space = OSS16_StreamGetSpace(this);
    172172        while(space) {
    173                 byteswritten = AddBuffer(space);
     173                byteswritten = AddBuffer(space);
     174                if(byteswritten == (ULONG)-1) break;
    174175                space -= byteswritten;
    175                 if(byteswritten == 0) break;
    176         }       
     176        }
    177177   }
    178178}
     
    191191
    192192   if(!pTemp || pTemp->ulBuffpos >= (pTemp->ulBuffsz & 0xFFFFFFFC)) {
    193         pTemp = (PSTREAMBUFFER)qhInProcess.Head();
     193        pTemp = (PSTREAMBUFFER)qhInProcess.Head();
    194194   }
    195195   if(!pTemp) {
    196196        dprintf4(("AddBuffer: pTemp == NULL"));
    197         return 0;
     197        return (ULONG)-1;
    198198   }
    199199
     
    202202   Buff_left = pTemp->ulBuffsz - pTemp->ulBuffpos;
    203203
    204    // write the audio buffer
    205    Buff_left = min(Buff_left, space);
    206    byteswritten = OSS16_StreamAddBuffer(this, pdataBuf, Buff_left);
    207    if(byteswritten == 0) {
    208         return 0; //no more room
    209    }
    210 
    211    // update the buffer pos counter
    212    pTemp->ulBuffpos += byteswritten;
    213 
    214    if(pTemp != qhDone.Tail()) {
    215         qhDone.PushOnTail(qhInProcess.PopHead());
     204   if(Buff_left) {
     205        // write the audio buffer
     206        Buff_left = min(Buff_left, space);
     207        byteswritten = OSS16_StreamAddBuffer(this, pdataBuf, Buff_left);
     208        if(byteswritten == 0) {
     209            return (ULONG)-1; //no more room
     210        }
     211
     212        // update the buffer pos counter
     213        pTemp->ulBuffpos += byteswritten;
     214   }
     215   else byteswritten = 0;
     216
     217   if(pTemp == qhInProcess.Head()) {
     218        qhDone.PushOnTail(qhInProcess.PopHead());
    216219   }
    217220   dprintf4(("AddBuffer %lx size %d, bytes written %d", pdataBuf, (USHORT)Buff_left, (USHORT)byteswritten));
     
    299302          else  break; //shouldn't happen
    300303        }
    301 
    302         //Get rid of empty buffers
    303         ptemp = (PSTREAMBUFFER)qhInProcess.Head();
    304         if(ptemp && (ptemp->ulBuffsz == 0 || ptemp->pBuffptr == NULL)) {
    305                 dprintf(("Returning 0 size buffer immediately"));
    306                 ReturnBuffer();
    307         }
    308         AddBuffers(FALSE);
    309         break;
    310    }
    311    case STREAM_READ:           
    312         while(_vReadAudioBuf());
    313         break;
     304        AddBuffers(FALSE);
     305        break;
     306   }
     307   case STREAM_READ:
     308        while(_vReadAudioBuf());
     309        break;
    314310   default:
    315311      break;
Note: See TracChangeset for help on using the changeset viewer.