Changeset 3044 for trunk/src/dsound/new/dart.cpp
- Timestamp:
- Mar 8, 2000, 7:26:49 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/dsound/new/dart.cpp
r3035 r3044 25 25 static long lLastBuff; 26 26 static char *pDSoundBuff; 27 static BOOL fIsPlaying = FALSE; 27 28 28 29 USHORT usDeviceID; /* Amp Mixer device id */ … … 70 71 MCI_AMP_OPEN_PARMS AmpOpenParms; 71 72 //MCI_WAVE_SET_PARMS WaveSetParms; 72 ULONG rc; 73 ULONG rc, ulNew; 74 LONG lAdd = 5; 73 75 short device = 0; 74 76 75 77 dprintf(("DSOUND-DART: Dart_Open_Device")); 78 79 DosSetRelMaxFH(&lAdd, &ulNew); 76 80 77 81 *vpMixBuffer = &MixBuffers; … … 175 179 MCI_MIXSETUP_PARMS *MixSetup; 176 180 MCI_BUFFER_PARMS *BufferParms; 181 ULONG rc; 177 182 178 183 dprintf(("DSOUND-DART: Dart_Close_Device")); … … 182 187 BufferParms = (MCI_BUFFER_PARMS*)vpBuffParms; 183 188 184 if (MixBuffer->pBuffer) {185 mciSendCommand(usDeviceID,MCI_BUFFER,MCI_WAIT|MCI_DEALLOCATE_MEMORY, BufferParms,0);186 MixBuffer->pBuffer=NULL;187 188 if (usDeviceID) {189 mciSendCommand(usDeviceID,MCI_CLOSE,MCI_WAIT, NULL, 0);190 usDeviceID=0;191 189 rc = mciSendCommand(usDeviceID, MCI_BUFFER, MCI_WAIT | MCI_DEALLOCATE_MEMORY, BufferParms, 0); 190 if (rc != MCIERR_SUCCESS) { 191 dprintf(("DSOUND-DART: MCI_BUFFER (Close) %d", rc)); 192 } 193 rc = mciSendCommand(usDeviceID, MCI_CLOSE, MCI_WAIT, NULL, 0); 194 if (rc != MCIERR_SUCCESS) { 195 dprintf(("DSOUND-DART: MCI_CLOSE (Close) %d", rc)); 196 } 192 197 193 198 dprintf(("DSOUND-DART: Dart_Close_Device returning DS_OK")); … … 301 306 } 302 307 308 /* If the primary buffer was playing, we have to restart it!! */ 309 if (fIsPlaying) { 310 dprintf(("DSOUND-DART: Restarting playback!!!!")); 311 312 /* Mix the first buffer before playing */ 313 MixCallback(BUFFER_SIZE/NUM_DART_BUFFS); 314 memcpy(pMixBuffs[lLastBuff].pBuffer, &pDSoundBuff[lLastBuff*(BUFFER_SIZE/NUM_DART_BUFFS)], BUFFER_SIZE/NUM_DART_BUFFS); 315 316 USHORT sel = RestoreOS2FS(); 317 /* Note: the call to pmixWrite trashes the FS selector, we have to save */ 318 /* and then restore FS!!! Otherwise exception handling will be broken. */ 319 MixSetupParms.pmixWrite(MixSetupParms.ulMixHandle, MixBuffers, 2); 320 SetFS(sel); 321 fIsPlaying = TRUE; 322 } 323 303 324 return DS_OK; 304 325 } … … 311 332 dprintf(("DSOUND-DART: Dart_Stop")); 312 333 334 if (!fIsPlaying) 335 return DS_OK; 336 337 fIsPlaying = FALSE; 313 338 // rc = mciSendCommand(usDeviceID, MCI_PAUSE, MCI_WAIT, NULL, 0); 314 339 rc = mciSendCommand(usDeviceID, MCI_STOP, MCI_WAIT, NULL, 0); … … 349 374 MixSetupParms.pmixWrite(MixSetupParms.ulMixHandle, MixBuffers, 2); 350 375 SetFS(sel); 351 } 352 353 return DS_OK; 354 } 376 fIsPlaying = TRUE; 377 } 378 379 return DS_OK; 380 }
Note:
See TracChangeset
for help on using the changeset viewer.