summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYoann Lopes <yoann.lopes@theqtcompany.com>2016-01-19 13:58:06 +0100
committerYoann Lopes <yoann.lopes@theqtcompany.com>2016-01-19 15:30:40 +0000
commit94c846fb48baec9f1a6ddcc974d6db61c95658d8 (patch)
tree97ea6cc1782572c7b1088d36b0c8c5426e76a03d
parentf97c4aaa86a8a0a5694e0e534892e7a3aa76d2ca (diff)
downloadqtmultimedia-94c846fb48baec9f1a6ddcc974d6db61c95658d8.tar.gz
CoreAudio: fix QAudioOutput state after resume().
In push mode, the state must be IdleState after resume(), and only change to ActiveState once it receives some data. Task-number: QTBUG-50390 Change-Id: I4a38aa84a55e90d7a2db3e1d504674b2a688bbde Reviewed-by: Pasi Petäjäjärvi <pasi.petajajarvi@theqtcompany.com>
-rw-r--r--src/plugins/coreaudio/coreaudiooutput.h1
-rw-r--r--src/plugins/coreaudio/coreaudiooutput.mm5
2 files changed, 5 insertions, 1 deletions
diff --git a/src/plugins/coreaudio/coreaudiooutput.h b/src/plugins/coreaudio/coreaudiooutput.h
index 4b4b781f5..cc391f783 100644
--- a/src/plugins/coreaudio/coreaudiooutput.h
+++ b/src/plugins/coreaudio/coreaudiooutput.h
@@ -187,6 +187,7 @@ private:
QTimer *m_intervalTimer;
CoreAudioDeviceInfo *m_audioDeviceInfo;
qreal m_cachedVolume;
+ bool m_pullMode;
QAudio::Error m_errorCode;
QAudio::State m_stateCode;
diff --git a/src/plugins/coreaudio/coreaudiooutput.mm b/src/plugins/coreaudio/coreaudiooutput.mm
index 149b5a8c0..2db26297a 100644
--- a/src/plugins/coreaudio/coreaudiooutput.mm
+++ b/src/plugins/coreaudio/coreaudiooutput.mm
@@ -222,6 +222,7 @@ CoreAudioOutput::CoreAudioOutput(const QByteArray &device)
, m_startTime(0)
, m_audioBuffer(0)
, m_cachedVolume(1.0)
+ , m_pullMode(false)
, m_errorCode(QAudio::NoError)
, m_stateCode(QAudio::StoppedState)
{
@@ -271,6 +272,7 @@ void CoreAudioOutput::start(QIODevice *device)
m_stateCode = QAudio::ActiveState;
// Start
+ m_pullMode = true;
m_errorCode = QAudio::NoError;
m_totalFrames = 0;
m_startTime = CoreAudioUtils::currentTime();
@@ -296,6 +298,7 @@ QIODevice *CoreAudioOutput::start()
m_stateCode = QAudio::IdleState;
// Start
+ m_pullMode = false;
m_errorCode = QAudio::NoError;
m_totalFrames = 0;
m_startTime = CoreAudioUtils::currentTime();
@@ -347,7 +350,7 @@ void CoreAudioOutput::resume()
if (m_stateCode == QAudio::SuspendedState) {
audioThreadStart();
- m_stateCode = QAudio::ActiveState;
+ m_stateCode = m_pullMode ? QAudio::ActiveState : QAudio::IdleState;
m_errorCode = QAudio::NoError;
emit stateChanged(m_stateCode);
}