Changeset 188 for sbliveos2/trunk/drv16/wavestrm.cpp
- Timestamp:
- Sep 9, 2001, 5:31:35 PM (24 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sbliveos2/trunk/drv16/wavestrm.cpp
r178 r188 165 165 //underrun: stop playback 166 166 dprintf(("underrun: stop playback")); 167 167 pahw->Stop(this); 168 168 fUnderrun = TRUE; 169 169 return; … … 171 171 space = OSS16_StreamGetSpace(this); 172 172 while(space) { 173 byteswritten = AddBuffer(space); 173 byteswritten = AddBuffer(space); 174 if(byteswritten == (ULONG)-1) break; 174 175 space -= byteswritten; 175 if(byteswritten == 0) break; 176 } 176 } 177 177 } 178 178 } … … 191 191 192 192 if(!pTemp || pTemp->ulBuffpos >= (pTemp->ulBuffsz & 0xFFFFFFFC)) { 193 193 pTemp = (PSTREAMBUFFER)qhInProcess.Head(); 194 194 } 195 195 if(!pTemp) { 196 196 dprintf4(("AddBuffer: pTemp == NULL")); 197 return 0;197 return (ULONG)-1; 198 198 } 199 199 … … 202 202 Buff_left = pTemp->ulBuffsz - pTemp->ulBuffpos; 203 203 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()); 216 219 } 217 220 dprintf4(("AddBuffer %lx size %d, bytes written %d", pdataBuf, (USHORT)Buff_left, (USHORT)byteswritten)); … … 299 302 else break; //shouldn't happen 300 303 } 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; 314 310 default: 315 311 break;
Note:
See TracChangeset
for help on using the changeset viewer.