summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPiotr Srebrny <piotr.srebrny@qt.io>2022-02-09 16:21:53 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2022-02-14 09:49:05 +0000
commitc6bc66b90de0be6401ecabc78a986b48196e20b4 (patch)
tree275559cd42c7076fde2627f7f0a8a4a501d38a9f
parent822ab3202fadfb13f76ed6a80a36dd95534e2137 (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. Change-Id: I5416cf4e5b09a008e3b6af964fe65b48895c0c57 Reviewed-by: André de la Rocha <andre.rocha@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from commit 72582b7e22080c2a03f180e128873ca0b566df6e) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/multimedia/audio/qsamplecache_p.cpp13
-rw-r--r--src/multimedia/audio/qsamplecache_p.h3
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();