summaryrefslogtreecommitdiffstats
path: root/src/multimedia/audio/qaudiosink.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/multimedia/audio/qaudiosink.cpp')
-rw-r--r--src/multimedia/audio/qaudiosink.cpp42
1 files changed, 27 insertions, 15 deletions
diff --git a/src/multimedia/audio/qaudiosink.cpp b/src/multimedia/audio/qaudiosink.cpp
index 6b16a71aa..c0cce2c79 100644
--- a/src/multimedia/audio/qaudiosink.cpp
+++ b/src/multimedia/audio/qaudiosink.cpp
@@ -123,9 +123,10 @@ QAudioSink::QAudioSink(const QAudioDevice &audioDevice, const QAudioFormat &form
QObject(parent)
{
d = QPlatformMediaIntegration::instance()->devices()->audioOutputDevice(format, audioDevice);
- if (d) {
+ if (d)
connect(d, SIGNAL(stateChanged(QAudio::State)), SIGNAL(stateChanged(QAudio::State)));
- }
+ else
+ qWarning() << ("No audio device detected");
}
/*!
@@ -144,7 +145,7 @@ QAudioSink::~QAudioSink()
*/
QAudioFormat QAudioSink::format() const
{
- return d->format();
+ return d ? d->format() : QAudioFormat();
}
/*!
@@ -163,6 +164,8 @@ QAudioFormat QAudioSink::format() const
*/
void QAudioSink::start(QIODevice* device)
{
+ if (!d)
+ return;
d->elapsedTime.restart();
d->start(device);
}
@@ -186,6 +189,8 @@ void QAudioSink::start(QIODevice* device)
*/
QIODevice* QAudioSink::start()
{
+ if (!d)
+ return nullptr;
d->elapsedTime.restart();
return d->start();
}
@@ -198,7 +203,8 @@ QIODevice* QAudioSink::start()
*/
void QAudioSink::stop()
{
- d->stop();
+ if (d)
+ d->stop();
}
/*!
@@ -207,7 +213,8 @@ void QAudioSink::stop()
*/
void QAudioSink::reset()
{
- d->reset();
+ if (d)
+ d->reset();
}
/*!
@@ -218,7 +225,8 @@ void QAudioSink::reset()
*/
void QAudioSink::suspend()
{
- d->suspend();
+ if (d)
+ d->suspend();
}
/*!
@@ -231,7 +239,8 @@ void QAudioSink::suspend()
*/
void QAudioSink::resume()
{
- d->resume();
+ if (d)
+ d->resume();
}
/*!
@@ -242,7 +251,7 @@ void QAudioSink::resume()
*/
qsizetype QAudioSink::bytesFree() const
{
- return d->bytesFree();
+ return d ? d->bytesFree() : 0;
}
/*!
@@ -255,7 +264,8 @@ qsizetype QAudioSink::bytesFree() const
*/
void QAudioSink::setBufferSize(qsizetype value)
{
- d->setBufferSize(value);
+ if (d)
+ d->setBufferSize(value);
}
/*!
@@ -269,7 +279,7 @@ void QAudioSink::setBufferSize(qsizetype value)
*/
qsizetype QAudioSink::bufferSize() const
{
- return d->bufferSize();
+ return d ? d->bufferSize() : 0;
}
/*!
@@ -278,7 +288,7 @@ qsizetype QAudioSink::bufferSize() const
*/
qint64 QAudioSink::processedUSecs() const
{
- return d->processedUSecs();
+ return d ? d->processedUSecs() : 0;
}
/*!
@@ -287,7 +297,7 @@ qint64 QAudioSink::processedUSecs() const
*/
qint64 QAudioSink::elapsedUSecs() const
{
- return d->state() == QAudio::StoppedState ? 0 : d->elapsedTime.nsecsElapsed()/1000;
+ return state() == QAudio::StoppedState ? 0 : d->elapsedTime.nsecsElapsed()/1000;
}
/*!
@@ -295,7 +305,7 @@ qint64 QAudioSink::elapsedUSecs() const
*/
QAudio::Error QAudioSink::error() const
{
- return d->error();
+ return d ? d->error() : QAudio::OpenError;
}
/*!
@@ -303,7 +313,7 @@ QAudio::Error QAudioSink::error() const
*/
QAudio::State QAudioSink::state() const
{
- return d->state();
+ return d ? d->state() : QAudio::StoppedState;
}
/*!
@@ -324,6 +334,8 @@ QAudio::State QAudioSink::state() const
*/
void QAudioSink::setVolume(qreal volume)
{
+ if (!d)
+ return;
qreal v = qBound(qreal(0.0), volume, qreal(1.0));
d->setVolume(v);
}
@@ -333,7 +345,7 @@ void QAudioSink::setVolume(qreal volume)
*/
qreal QAudioSink::volume() const
{
- return d->volume();
+ return d ? d->volume() : 1.0;
}
/*!