diff options
author | Piotr Srebrny <piotr.srebrny@qt.io> | 2022-02-09 16:21:53 +0100 |
---|---|---|
committer | Piotr Srebrny <piotr.srebrny@qt.io> | 2022-02-14 10:01:59 +0100 |
commit | 72582b7e22080c2a03f180e128873ca0b566df6e (patch) | |
tree | 30007bd979c30f46cbdb4885a8ea97a7245efe1e | |
parent | 1f9c3926687bac52ee794a99dcb19d66e11af24c (diff) |
Avoid misleading error information, display proper loading error
QSample displays _decoder error_ when invalid URL is provided. This is
misleading. This patch adds a proper message for these types of errors.
Pick-to: 6.2 6.3
Change-Id: I5416cf4e5b09a008e3b6af964fe65b48895c0c57
Reviewed-by: André de la Rocha <andre.rocha@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
-rw-r--r-- | src/multimedia/audio/qsamplecache_p.cpp | 13 | ||||
-rw-r--r-- | src/multimedia/audio/qsamplecache_p.h | 3 |
2 files changed, 14 insertions, 2 deletions
diff --git a/src/multimedia/audio/qsamplecache_p.cpp b/src/multimedia/audio/qsamplecache_p.cpp index ddb12b256..7a069ff66 100644 --- a/src/multimedia/audio/qsamplecache_p.cpp +++ b/src/multimedia/audio/qsamplecache_p.cpp @@ -382,7 +382,7 @@ void QSample::load() Q_ASSERT(QThread::currentThread()->objectName() == QLatin1String("QSampleCache::LoadingThread")); qCDebug(qLcSampleCache) << "QSample: load [" << m_url << "]"; m_stream = m_parent->networkAccessManager().get(QNetworkRequest(m_url)); - connect(m_stream, SIGNAL(errorOccurred(QNetworkReply::NetworkError)), SLOT(decoderError())); + connect(m_stream, SIGNAL(errorOccurred(QNetworkReply::NetworkError)), SLOT(loadingError(QNetworkReply::NetworkError))); m_waveDecoder = new QWaveDecoder(m_stream); connect(m_waveDecoder, SIGNAL(formatKnown()), SLOT(decoderReady())); connect(m_waveDecoder, SIGNAL(parsingError()), SLOT(decoderError())); @@ -391,6 +391,17 @@ void QSample::load() m_waveDecoder->open(QIODevice::ReadOnly); } +void QSample::loadingError(QNetworkReply::NetworkError errorCode) +{ + Q_ASSERT(QThread::currentThread()->objectName() == QLatin1String("QSampleCache::LoadingThread")); + QMutexLocker m(&m_mutex); + qCDebug(qLcSampleCache) << "QSample: loading error" << errorCode; + cleanup(); + m_state = QSample::Error; + qobject_cast<QSampleCache*>(m_parent)->loadingRelease(); + emit error(); +} + // Called in loading thread void QSample::decoderError() { diff --git a/src/multimedia/audio/qsamplecache_p.h b/src/multimedia/audio/qsamplecache_p.h index d9e84c947..4a9873018 100644 --- a/src/multimedia/audio/qsamplecache_p.h +++ b/src/multimedia/audio/qsamplecache_p.h @@ -58,7 +58,7 @@ #include <QtCore/qmap.h> #include <QtCore/qset.h> #include <qaudioformat.h> - +#include <qnetworkreply.h> QT_BEGIN_NAMESPACE @@ -97,6 +97,7 @@ protected: private Q_SLOTS: void load(); + void loadingError(QNetworkReply::NetworkError); void decoderError(); void readSample(); void decoderReady(); |