void QT_WIN_CALLBACK QAudioOutputPrivate::waveOutProc( HWAVEOUT hWaveOut, UINT uMsg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2 ) { Q_UNUSED(dwParam1) Q_UNUSED(dwParam2) Q_UNUSED(hWaveOut) QAudioOutputPrivate* qAudio; qAudio = (QAudioOutputPrivate*)(dwInstance); if(!qAudio) return; switch(uMsg) { case WOM_OPEN: qAudio->feedback(); break; case WOM_CLOSE: return; case WOM_DONE: EnterCriticalSection(&waveOutCriticalSection); if(qAudio->finished || qAudio->buffer_size == 0 || qAudio->period_size == 0) { LeaveCriticalSection(&waveOutCriticalSection); return; } qAudio->waveFreeBlockCount++; if(qAudio->waveFreeBlockCount >= qAudio->buffer_size/qAudio->period_size) qAudio->waveFreeBlockCount = qAudio->buffer_size/qAudio->period_size; qAudio->feedback(); LeaveCriticalSection(&waveOutCriticalSection); break; default: return; } }
void CALLBACK QAudioOutputPrivate::waveOutProc( HWAVEOUT hWaveOut, UINT uMsg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2 ) { Q_UNUSED(dwParam1) Q_UNUSED(dwParam2) Q_UNUSED(hWaveOut) QAudioOutputPrivate* qAudio; qAudio = (QAudioOutputPrivate*)(dwInstance); if(!qAudio) return; QMutexLocker(&qAudio->mutex); switch(uMsg) { case WOM_OPEN: qAudio->feedback(); break; case WOM_CLOSE: return; case WOM_DONE: if(qAudio->finished || qAudio->buffer_size == 0 || qAudio->period_size == 0) { return; } qAudio->waveFreeBlockCount++; if(qAudio->waveFreeBlockCount >= qAudio->buffer_size/qAudio->period_size) qAudio->waveFreeBlockCount = qAudio->buffer_size/qAudio->period_size; qAudio->feedback(); break; default: return; } }
void QAudioOutputPrivate::async_callback(snd_async_handler_t *ahandler) { QAudioOutputPrivate* audioOut; audioOut = static_cast<QAudioOutputPrivate*> (snd_async_handler_get_callback_private(ahandler)); if((audioOut->deviceState==QAudio::ActiveState)||(audioOut->resuming)) audioOut->feedback(); }