src/multimedia/audio/qaudiooutput_mac_p.cpp
changeset 19 fcece45ef507
parent 18 2f34d5167611
child 33 3e2da88830cd
--- a/src/multimedia/audio/qaudiooutput_mac_p.cpp	Fri Apr 16 15:50:13 2010 +0300
+++ b/src/multimedia/audio/qaudiooutput_mac_p.cpp	Mon May 03 13:17:34 2010 +0300
@@ -70,7 +70,7 @@
 QT_BEGIN_NAMESPACE
 
 
-namespace
+namespace QtMultimediaInternal
 {
 
 static const int default_buffer_size = 8 * 1024;
@@ -237,7 +237,7 @@
     Q_OBJECT
 
 public:
-    MacOutputDevice(QAudioOutputBuffer* audioBuffer, QObject* parent):
+    MacOutputDevice(QtMultimediaInternal::QAudioOutputBuffer* audioBuffer, QObject* parent):
         QIODevice(parent),
         m_audioBuffer(audioBuffer)
     {
@@ -263,7 +263,7 @@
     }
 
 private:
-    QAudioOutputBuffer*    m_audioBuffer;
+    QtMultimediaInternal::QAudioOutputBuffer*    m_audioBuffer;
 };
 
 
@@ -285,7 +285,7 @@
         startTime = 0;
         totalFrames = 0;
         audioBuffer = 0;
-        internalBufferSize = default_buffer_size;
+        internalBufferSize = QtMultimediaInternal::default_buffer_size;
         clockFrequency = AudioGetHostClockFrequency() / 1000;
         errorCode = QAudio::NoError;
         stateCode = QAudio::StoppedState;
@@ -399,7 +399,7 @@
     else
         internalBufferSize -= internalBufferSize % streamFormat.mBytesPerFrame;
 
-    audioBuffer = new QAudioOutputBuffer(internalBufferSize, periodSizeBytes, audioFormat);
+    audioBuffer = new QtMultimediaInternal::QAudioOutputBuffer(internalBufferSize, periodSizeBytes, audioFormat);
     connect(audioBuffer, SIGNAL(readyRead()), SLOT(inputReady()));  // Pull
 
     audioIO = new MacOutputDevice(audioBuffer, this);
@@ -435,7 +435,7 @@
 {
     QIODevice*  op = device;
 
-    if (!open()) {
+    if (!audioFormat.isValid() || !open()) {
         stateCode = QAudio::StoppedState;
         errorCode = QAudio::OpenError;
         return audioIO;
@@ -536,6 +536,12 @@
 
 void QAudioOutputPrivate::setNotifyInterval(int milliSeconds)
 {
+    if (intervalTimer->interval() == milliSeconds)
+        return;
+
+    if (milliSeconds <= 0)
+        milliSeconds = 0;
+
     intervalTimer->setInterval(milliSeconds);
 }
 
@@ -622,7 +628,8 @@
 void QAudioOutputPrivate::startTimers()
 {
     audioBuffer->startFillTimer();
-    intervalTimer->start();
+    if (intervalTimer->interval() > 0)
+        intervalTimer->start();
 }
 
 void QAudioOutputPrivate::stopTimers()