static void MME_CloseDevice(_THIS) { if (this->hidden != NULL) { MMRESULT result; if (this->hidden->mixbuf) { result = mmeFreeBuffer(this->hidden->mixbuf); if (result != MMSYSERR_NOERROR) SetMMerror("mmeFreeBuffer", result); this->hidden->mixbuf = NULL; } if (this->hidden->shm) { if (this->hidden->shm->sound) { result = waveOutClose(this->hidden->shm->sound); if (result != MMSYSERR_NOERROR) SetMMerror("waveOutClose()", result); mmeProcessCallbacks(); } result = mmeFreeMem(this->hidden->shm); if (result != MMSYSERR_NOERROR) SetMMerror("mmeFreeMem()", result); this->hidden->shm = NULL; } SDL_free(this->hidden); this->hidden = NULL; } }
void MmeGrabber::shutdown() { MMRESULT s; /* fprintf(stderr, "vic: Called MmeGrabber::shutdown\n"); */ if (!running_) return; wantgrab_ = 0; running_ = 0; s = videoStreamReset(handle_); (void)mme_error(s, "couldn't reset mme stream"); while(outstanding_) { mmeWaitForCallbacks(); mmeProcessCallbacks(); } s = videoStreamUnprepareHeader(handle_, vh_, sizeof(*vh_)); (void)mme_error(s, "couldn't unprepare mme video header"); s = videoStreamFini(handle_); (void)mme_error(s, "couldn't shutdown mme stream"); running_ = 0; mmeFreeBuffer(vh_->lpData); }
void close_sound(void) { if (have_sound) { mmeFreeMem(WaveHeader); mmeFreeBuffer(mme_audiobuf); waveOutClose(mme_handle); } mme_handle=0; }
static void MME_CloseAudio(_THIS) { MMRESULT result; if ( mixbuf ) { result = mmeFreeBuffer(mixbuf); if (result != MMSYSERR_NOERROR ) SetMMerror("mmeFreeBuffer", result); mixbuf = NULL; } if ( shm ) { if ( shm->sound ) { result = waveOutClose(shm->sound); if (result != MMSYSERR_NOERROR ) SetMMerror("waveOutClose()", result); mmeProcessCallbacks(); } result = mmeFreeMem(shm); if (result != MMSYSERR_NOERROR ) SetMMerror("mmeFreeMem()", result); shm = NULL; } }