- Timestamp:
- Aug 14, 2002, 9:02:10 PM (23 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/winmm/waveoutdart.cpp
r9003 r9004 1 /* $Id: waveoutdart.cpp,v 1.1 3 2002-08-14 17:37:55sandervl Exp $ */1 /* $Id: waveoutdart.cpp,v 1.14 2002-08-14 19:02:10 sandervl Exp $ */ 2 2 3 3 /* … … 277 277 278 278 //write buffers to DART; starts playback 279 // MCI_MIXSETUP_PARMS->pMixWrite does alter FS: selector!279 dprintf(("WINMM: transfer all buffers to DART")); 280 280 USHORT selTIB = RestoreOS2FS(); // save current FS selector 281 281 … … 314 314 315 315 //write buffers to DART; starts playback 316 // MCI_MIXSETUP_PARMS->pMixWrite does alter FS: selector!316 dprintf(("WINMM: transfer all buffers to DART")); 317 317 USHORT selTIB = RestoreOS2FS(); // save current FS selector 318 318 … … 346 346 memset(&Params, 0, sizeof(Params)); 347 347 348 // Pause theplayback.348 // Pause playback. 349 349 mymciSendCommand(DeviceId, MCI_PAUSE, MCI_WAIT, (PVOID)&Params, 0); 350 350 … … 365 365 return(MMSYSERR_NOERROR); 366 366 } 367 State = STATE_PLAYING; 367 368 wmutex.leave(); 368 369 369 //Only write buffers to dart if mixer has been initialized; if not, then 370 //the first buffer write will do this for us. 371 if(fMixerSetup == TRUE) 372 { 373 wmutex.enter(); 374 State = STATE_PLAYING; 375 fUnderrun = FALSE; 376 curbuf = curPlayBuf; 377 writeBuffer(); //must be called before (re)starting playback 378 wmutex.leave(); 379 380 // MCI_MIXSETUP_PARMS->pMixWrite does alter FS: selector! 381 USHORT selTIB = GetFS(); // save current FS selector 382 383 for(i=0;i<PREFILLBUF_DART;i++) 384 { 385 dprintf(("restart: write buffer at %x size %d", MixBuffer[curbuf].pBuffer, MixBuffer[curbuf].ulBufferLength)); 386 MixSetupParms->pmixWrite(MixSetupParms->ulMixHandle, &MixBuffer[curbuf], 1); 387 if(++curbuf == PREFILLBUF_DART) 388 curbuf = 0; 389 } 390 SetFS(selTIB); // switch back to the saved FS selector 391 } 370 // Resume playback. 371 mymciSendCommand(DeviceId, MCI_RESUME, MCI_WAIT, (PVOID)&Params, 0); 392 372 393 373 return(MMSYSERR_NOERROR); … … 570 550 bytesPlayed += MixBuffer[curPlayBuf].ulBufferLength; 571 551 552 //update our buffer index 572 553 if(curPlayBuf == PREFILLBUF_DART-1) 573 554 curPlayBuf = 0; … … 629 610 wmutex.leave(); 630 611 631 //Transfer bufferto DART632 // MCI_MIXSETUP_PARMS->pMixWrite does alter FS: selector!612 //Transfer the buffer we just finished playing to DART 613 dprintf2(("WINMM: handler transfer buffer %d", pBuffer - MixBuffer)); 633 614 USHORT selTIB = RestoreOS2FS(); // save current FS selector 634 MixSetupParms->pmixWrite(MixSetupParms->ulMixHandle, &MixBuffer[curFillBuf], 1);615 MixSetupParms->pmixWrite(MixSetupParms->ulMixHandle, pBuffer, 1); 635 616 SetFS(selTIB); // switch back to the saved FS selector 636 617 … … 683 664 if(curPlayPos == MixBuffer[curFillBuf].ulBufferLength) { 684 665 curPlayPos = 0; 666 685 667 if(++curFillBuf == PREFILLBUF_DART) { 686 668 curFillBuf = 0;
Note:
See TracChangeset
for help on using the changeset viewer.