src/multimedia/audio/qaudiooutput_win32_p.cpp
changeset 3 41300fa6a67c
parent 0 1918ee327afb
child 4 3b1da2848fc7
child 7 f7bc934e204c
child 18 2f34d5167611
--- a/src/multimedia/audio/qaudiooutput_win32_p.cpp	Tue Jan 26 12:42:25 2010 +0200
+++ b/src/multimedia/audio/qaudiooutput_win32_p.cpp	Tue Feb 02 00:43:10 2010 +0200
@@ -71,7 +71,7 @@
     intervalTime = 1000;
     audioBuffer = 0;
     errorState = QAudio::NoError;
-    deviceState = QAudio::StopState;
+    deviceState = QAudio::StoppedState;
     audioSource = 0;
     pullMode = true;
     finished = false;
@@ -147,6 +147,14 @@
 
 void QAudioOutputPrivate::freeBlocks(WAVEHDR* blockArray)
 {
+    WAVEHDR* blocks = blockArray;
+
+    int count = buffer_size/period_size;
+
+    for(int i = 0; i < count; i++) {
+        waveOutUnprepareHeader(hWaveOut,&blocks[i], sizeof(WAVEHDR));
+        blocks+=sizeof(WAVEHDR);
+    }
     HeapFree(GetProcessHeap(), 0, blockArray);
 }
 
@@ -157,7 +165,7 @@
 
 QIODevice* QAudioOutputPrivate::start(QIODevice* device)
 {
-    if(deviceState != QAudio::StopState)
+    if(deviceState != QAudio::StoppedState)
         close();
 
     if(!pullMode && audioSource) {
@@ -187,7 +195,7 @@
 
 void QAudioOutputPrivate::stop()
 {
-    if(deviceState == QAudio::StopState)
+    if(deviceState == QAudio::StoppedState)
         return;
     close();
     if(!pullMode && audioSource) {
@@ -255,7 +263,7 @@
                 (DWORD_PTR) this,
                 CALLBACK_FUNCTION) != MMSYSERR_NOERROR) {
         errorState = QAudio::OpenError;
-        deviceState = QAudio::StopState;
+        deviceState = QAudio::StoppedState;
         emit stateChanged(deviceState);
         qWarning("QAudioOutput: open error");
         return false;
@@ -277,10 +285,10 @@
 
 void QAudioOutputPrivate::close()
 {
-    if(deviceState == QAudio::StopState)
+    if(deviceState == QAudio::StoppedState)
         return;
 
-    deviceState = QAudio::StopState;
+    deviceState = QAudio::StoppedState;
     int delay = (buffer_size-bytesFree())*1000/(settings.frequency()
                   *settings.channels()*(settings.sampleSize()/8));
     waveOutReset(hWaveOut);
@@ -308,7 +316,7 @@
 
 void QAudioOutputPrivate::setBufferSize(int value)
 {
-    if(deviceState == QAudio::StopState)
+    if(deviceState == QAudio::StoppedState)
         buffer_size = value;
 }
 
@@ -330,7 +338,7 @@
     return intervalTime;
 }
 
-qint64 QAudioOutputPrivate::totalTime() const
+qint64 QAudioOutputPrivate::processedUSecs() const
 {
     return totalTimeValue;
 }
@@ -390,7 +398,7 @@
 
 void QAudioOutputPrivate::resume()
 {
-    if(deviceState == QAudio::SuspendState) {
+    if(deviceState == QAudio::SuspendedState) {
         deviceState = QAudio::ActiveState;
         errorState = QAudio::NoError;
         waveOutRestart(hWaveOut);
@@ -403,7 +411,7 @@
 {
     if(deviceState == QAudio::ActiveState) {
         waveOutPause(hWaveOut);
-        deviceState = QAudio::SuspendState;
+        deviceState = QAudio::SuspendedState;
         errorState = QAudio::NoError;
         emit stateChanged(deviceState);
     }
@@ -417,7 +425,7 @@
 #endif
     bytesAvailable = bytesFree();
 
-    if(!(deviceState==QAudio::StopState||deviceState==QAudio::SuspendState)) {
+    if(!(deviceState==QAudio::StoppedState||deviceState==QAudio::SuspendedState)) {
         if(bytesAvailable >= period_size)
             QMetaObject::invokeMethod(this, "deviceReady", Qt::QueuedConnection);
     }
@@ -491,9 +499,9 @@
     return true;
 }
 
-qint64 QAudioOutputPrivate::clock() const
+qint64 QAudioOutputPrivate::elapsedUSecs() const
 {
-    if (deviceState == QAudio::StopState)
+    if (deviceState == QAudio::StoppedState)
         return 0;
 
     return timeStampOpened.elapsed()*1000;