From 6cb94f2f479138a0b7eb29755e9ebc349615e7e9 Mon Sep 17 00:00:00 2001 From: pereverzev_v Date: Sat, 5 Sep 2020 18:03:07 +0200 Subject: [PATCH] fix #275837, crash during the initialization of start center --- mscore/downloadUtils.cpp | 12 +++++++++++- mscore/downloadUtils.h | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/mscore/downloadUtils.cpp b/mscore/downloadUtils.cpp index abf701547480c..688f7cee4ef32 100644 --- a/mscore/downloadUtils.cpp +++ b/mscore/downloadUtils.cpp @@ -11,6 +11,7 @@ //============================================================================= #include "downloadUtils.h" +#include namespace Ms { @@ -44,7 +45,7 @@ QByteArray DownloadUtils::returnData() return sdata; } -void DownloadUtils::download(bool showProgress) +void DownloadUtils::download(bool showProgress, const int timeOutMSecs) { QUrl url = QUrl::fromEncoded(_target.toLocal8Bit()); QNetworkRequest request(url); @@ -55,6 +56,15 @@ void DownloadUtils::download(bool showProgress) QObject::connect(&manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(downloadFinished(QNetworkReply*))); QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit())); + QTimer timer; + timer.setSingleShot(true); + timer.start(timeOutMSecs); + QObject::connect(&timer, &QTimer::timeout, this, [reply] () { + reply->abort(); + }); + + QObject::connect(reply, &QNetworkReply::finished, &timer, &QTimer::stop); + if (showProgress) { progressDialog = new QProgressDialog(static_cast(parent())); progressDialog->setWindowFlags(Qt::WindowFlags(Qt::Dialog | Qt::FramelessWindowHint | Qt::WindowTitleHint)); diff --git a/mscore/downloadUtils.h b/mscore/downloadUtils.h index d9c92c51b09fb..f9b4f8c577376 100644 --- a/mscore/downloadUtils.h +++ b/mscore/downloadUtils.h @@ -38,7 +38,7 @@ class DownloadUtils : public QObject void done(); public slots: - void download(bool showProgress = false); + void download(bool showProgress = false, const int timeOutMSecs = 20000); void downloadFinished(QNetworkReply* data); void downloadProgress(qint64 received, qint64 total); };