Beispiel #1
0
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;
    }
}
Beispiel #2
0
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);
}
Beispiel #3
0
void close_sound(void)
{
    if (have_sound) {
	mmeFreeMem(WaveHeader);
	mmeFreeBuffer(mme_audiobuf);
	waveOutClose(mme_handle);
    }
    mme_handle=0;
}
Beispiel #4
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;
    }
}