diff options
Diffstat (limited to 'examples/multimedia/spectrum/app')
-rw-r--r-- | examples/multimedia/spectrum/app/engine.cpp | 19 | ||||
-rw-r--r-- | examples/multimedia/spectrum/app/engine.h | 1 | ||||
-rw-r--r-- | examples/multimedia/spectrum/app/mainwidget.cpp | 7 |
3 files changed, 25 insertions, 2 deletions
diff --git a/examples/multimedia/spectrum/app/engine.cpp b/examples/multimedia/spectrum/app/engine.cpp index 07e82bb4a..eb289ca6c 100644 --- a/examples/multimedia/spectrum/app/engine.cpp +++ b/examples/multimedia/spectrum/app/engine.cpp @@ -113,6 +113,23 @@ Engine::Engine(QObject *parent) this, SLOT(spectrumChanged(FrequencySpectrum))); + // This code might misinterpret things like "-something -category". But + // it's unlikely that that needs to be supported so we'll let it go. + QStringList arguments = QCoreApplication::instance()->arguments(); + for (int i = 0; i < arguments.count(); ++i) { + if (arguments.at(i) == QStringLiteral("--")) + break; + + if (arguments.at(i) == QStringLiteral("-category") + || arguments.at(i) == QStringLiteral("--category")) { + ++i; + if (i < arguments.count()) + m_audioOutputCategory = arguments.at(i); + else + --i; + } + } + initialize(); #ifdef DUMP_DATA @@ -504,6 +521,7 @@ bool Engine::initialize() } m_audioOutput = new QAudioOutput(m_audioOutputDevice, m_format, this); m_audioOutput->setNotifyInterval(NotifyIntervalMs); + m_audioOutput->setCategory(m_audioOutputCategory); } } else { if (m_file) @@ -518,6 +536,7 @@ bool Engine::initialize() ENGINE_DEBUG << "Engine::initialize" << "m_bufferLength" << m_bufferLength; ENGINE_DEBUG << "Engine::initialize" << "m_dataLength" << m_dataLength; ENGINE_DEBUG << "Engine::initialize" << "format" << m_format; + ENGINE_DEBUG << "Engine::initialize" << "m_audioOutputCategory" << m_audioOutputCategory; return result; } diff --git a/examples/multimedia/spectrum/app/engine.h b/examples/multimedia/spectrum/app/engine.h index 3fc1afe68..ff56d7c8b 100644 --- a/examples/multimedia/spectrum/app/engine.h +++ b/examples/multimedia/spectrum/app/engine.h @@ -297,6 +297,7 @@ private: const QList<QAudioDeviceInfo> m_availableAudioOutputDevices; QAudioDeviceInfo m_audioOutputDevice; QAudioOutput* m_audioOutput; + QString m_audioOutputCategory; qint64 m_playPosition; QBuffer m_audioOutputIODevice; diff --git a/examples/multimedia/spectrum/app/mainwidget.cpp b/examples/multimedia/spectrum/app/mainwidget.cpp index 9186320cd..6585fec94 100644 --- a/examples/multimedia/spectrum/app/mainwidget.cpp +++ b/examples/multimedia/spectrum/app/mainwidget.cpp @@ -119,7 +119,9 @@ void MainWidget::stateChanged(QAudio::Mode mode, QAudio::State state) updateButtonStates(); - if (QAudio::ActiveState != state && QAudio::SuspendedState != state) { + if (QAudio::ActiveState != state && + QAudio::SuspendedState != state && + QAudio::InterruptedState != state) { m_levelMeter->reset(); m_spectrograph->reset(); } @@ -428,7 +430,8 @@ void MainWidget::updateButtonStates() const bool playEnabled = (/*m_engine->dataLength() &&*/ (QAudio::AudioOutput != m_engine->mode() || (QAudio::ActiveState != m_engine->state() && - QAudio::IdleState != m_engine->state()))); + QAudio::IdleState != m_engine->state() && + QAudio::InterruptedState != m_engine->state()))); m_playButton->setEnabled(playEnabled); } |