src/multimedia/audio/qaudiooutput_win32_p.cpp
changeset 22 79de32ba3296
parent 19 fcece45ef507
child 23 89e065397ea6
equal deleted inserted replaced
19:fcece45ef507 22:79de32ba3296
    53 #include "qaudiooutput_win32_p.h"
    53 #include "qaudiooutput_win32_p.h"
    54 
    54 
    55 //#define DEBUG_AUDIO 1
    55 //#define DEBUG_AUDIO 1
    56 
    56 
    57 QT_BEGIN_NAMESPACE
    57 QT_BEGIN_NAMESPACE
    58 
       
    59 static CRITICAL_SECTION waveOutCriticalSection;
       
    60 
    58 
    61 static const int minimumIntervalTime = 50;
    59 static const int minimumIntervalTime = 50;
    62 
    60 
    63 QAudioOutputPrivate::QAudioOutputPrivate(const QByteArray &device, const QAudioFormat& audioFormat):
    61 QAudioOutputPrivate::QAudioOutputPrivate(const QByteArray &device, const QAudioFormat& audioFormat):
    64     settings(audioFormat)
    62     settings(audioFormat)
   105             qAudio->feedback();
   103             qAudio->feedback();
   106             break;
   104             break;
   107         case WOM_CLOSE:
   105         case WOM_CLOSE:
   108             return;
   106             return;
   109         case WOM_DONE:
   107         case WOM_DONE:
   110             EnterCriticalSection(&waveOutCriticalSection);
   108             EnterCriticalSection(&qAudio->waveOutCriticalSection);
   111             if(qAudio->finished || qAudio->buffer_size == 0 || qAudio->period_size == 0) {
   109             if(qAudio->finished || qAudio->buffer_size == 0 || qAudio->period_size == 0) {
   112                 LeaveCriticalSection(&waveOutCriticalSection);
   110                 LeaveCriticalSection(&qAudio->waveOutCriticalSection);
   113                 return;
   111                 return;
   114 	    }
   112 	    }
   115             qAudio->waveFreeBlockCount++;
   113             qAudio->waveFreeBlockCount++;
   116             if(qAudio->waveFreeBlockCount >= qAudio->buffer_size/qAudio->period_size)
   114             if(qAudio->waveFreeBlockCount >= qAudio->buffer_size/qAudio->period_size)
   117                 qAudio->waveFreeBlockCount = qAudio->buffer_size/qAudio->period_size;
   115                 qAudio->waveFreeBlockCount = qAudio->buffer_size/qAudio->period_size;
   118             qAudio->feedback();
   116             qAudio->feedback();
   119             LeaveCriticalSection(&waveOutCriticalSection);
   117             LeaveCriticalSection(&qAudio->waveOutCriticalSection);
   120             break;
   118             break;
   121         default:
   119         default:
   122             return;
   120             return;
   123     }
   121     }
   124 }
   122 }