void MmeGrabber::dispatch(int mask) { /* fprintf(stderr, "vic: Called MmeGrabber::dispatch\n"); */ while (mmeCheckForCallbacks()) mmeProcessCallbacks(); if (wantgrab_ && running_ ) { wantgrab_ = 0; mmeMaster->grab(); } }
__inline__ void check_sound_buffers (void) { if (((char *)sndbufpt - (char *)mme_sndbufpt) < sndbufsize) return 0; if (mmeCheckForCallbacks()) mmeProcessCallbacks(); if (mme_free_bufs >= SOUND_NUMBUF) return 0; WaveHeader->lpData = (LPSTR)mme_sndbufpt; WaveHeader->dwBufferLength = ((char *)sndbufpt - (char *)mme_sndbufpt); mme_nextbuf++; if (mme_nextbuf == SOUND_NUMBUF) { mme_sndbufpt = sndbuffer; mme_nextbuf = 0; } else mme_sndbufpt += bytes_per_sample*sndbufsize*2; sndbufpt = mme_sndbufpt; if (waveOutWrite(mme_handle, WaveHeader, sizeof(WAVEHDR)) == MMSYSERR_NOERROR) mme_free_bufs++; return 1; }