Bugzilla – Attachment 811247 Details for
Bug 1141444
clementine: a memory hog
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Forgot Password
[patch]
delete the allocated mem v4
delete_the_allocated_memory_in_respective_destructors.patch (text/plain), 52.95 KB, created by
Jiri Slaby
on 2019-07-23 06:26:35 UTC
(
hide
)
Description:
delete the allocated mem v4
Filename:
MIME Type:
Creator:
Jiri Slaby
Created:
2019-07-23 06:26:35 UTC
Size:
52.95 KB
patch
obsolete
>From 3f47cb646cced46a49c5aa88bf95dd8132bbe231 Mon Sep 17 00:00:00 2001 >From: Jiri Slaby <jslaby@suse.cz> >Date: Thu, 18 Jul 2019 11:21:28 +0200 >Subject: [PATCH] leaks > >--- > ext/libclementine-tagreader/tagreader.cpp | 2 +- > ext/libclementine-tagreader/tagreader.h | 4 ++-- > src/core/crashreporting.cpp | 6 +++--- > src/core/crashreporting.h | 4 ++-- > src/core/database.cpp | 2 +- > src/covers/albumcoverfetcher.cpp | 6 ++++++ > src/covers/albumcoverfetcher.h | 3 ++- > src/covers/albumcoverfetchersearch.cpp | 4 ++-- > src/covers/albumcoverfetchersearch.h | 3 ++- > src/covers/albumcoverloader.cpp | 6 +++--- > src/covers/albumcoverloader.h | 4 ++-- > src/covers/discogscoverprovider.cpp | 6 +++--- > src/covers/discogscoverprovider.h | 3 ++- > src/covers/kittenloader.cpp | 2 +- > src/covers/musicbrainzcoverprovider.cpp | 6 +++--- > src/covers/musicbrainzcoverprovider.h | 4 ++-- > src/internet/box/boxservice.cpp | 10 +++++----- > src/internet/core/cloudfileservice.cpp | 2 +- > src/internet/core/cloudfileservice.h | 3 ++- > .../digitally/digitallyimportedclient.cpp | 6 +++--- > src/internet/digitally/digitallyimportedclient.h | 4 +++- > .../digitally/digitallyimportedservicebase.cpp | 4 ++-- > .../digitally/digitallyimportedservicebase.h | 3 ++- > src/internet/icecast/icecastservice.cpp | 4 ++-- > src/internet/icecast/icecastservice.h | 3 ++- > .../intergalacticfm/intergalacticfmservice.h | 6 +++--- > src/internet/jamendo/jamendoservice.cpp | 4 ++-- > src/internet/jamendo/jamendoservice.h | 4 ++-- > src/internet/podcasts/gpoddersearchpage.cpp | 4 ++-- > src/internet/podcasts/gpoddersearchpage.h | 5 ++--- > src/internet/podcasts/gpoddersync.cpp | 6 +++--- > src/internet/podcasts/gpoddersync.h | 3 ++- > src/internet/podcasts/gpoddertoptagspage.cpp | 4 ++-- > src/internet/podcasts/gpoddertoptagspage.h | 5 ++--- > src/internet/podcasts/itunessearchpage.cpp | 4 ++-- > src/internet/podcasts/itunessearchpage.h | 4 ++-- > src/internet/podcasts/podcastdownloader.cpp | 6 +++--- > src/internet/podcasts/podcastdownloader.h | 6 ++---- > src/internet/podcasts/podcasturlloader.cpp | 4 ++-- > src/internet/podcasts/podcasturlloader.h | 4 ++-- > src/internet/seafile/seafileservice.cpp | 12 ++++++------ > src/internet/skydrive/skydriveservice.cpp | 6 +++--- > src/internet/spotify/spotifyblobdownloader.cpp | 4 ++-- > src/internet/spotify/spotifyblobdownloader.h | 5 +++-- > src/internet/subsonic/subsonicservice.cpp | 4 +++- > src/musicbrainz/acoustidclient.cpp | 10 +++++----- > src/musicbrainz/acoustidclient.h | 7 +++---- > src/musicbrainz/musicbrainzclient.cpp | 15 ++++++++++++--- > src/musicbrainz/musicbrainzclient.h | 6 ++++-- > src/songinfo/ultimatelyricsprovider.cpp | 8 ++++---- > src/songinfo/ultimatelyricsprovider.h | 5 ++--- > src/ui/coverfromurldialog.cpp | 4 ++-- > src/ui/coverfromurldialog.h | 5 +++-- > 53 files changed, 144 insertions(+), 120 deletions(-) > >diff --git a/ext/libclementine-tagreader/tagreader.cpp b/ext/libclementine-tagreader/tagreader.cpp >index 26f81be..46440fb 100644 >--- a/ext/libclementine-tagreader/tagreader.cpp >+++ b/ext/libclementine-tagreader/tagreader.cpp >@@ -1318,7 +1318,7 @@ bool TagReader::ReadCloudFile(const QUrl& download_url, const QString& title, > qLog(Debug) << "Loading tags from" << title; > > std::unique_ptr<CloudStream> stream(new CloudStream( >- download_url, title, size, authorisation_header, network_)); >+ download_url, title, size, authorisation_header, network_.get())); > stream->Precache(); > std::unique_ptr<TagLib::File> tag; > if (mime_type == "audio/mpeg" && >diff --git a/ext/libclementine-tagreader/tagreader.h b/ext/libclementine-tagreader/tagreader.h >index 2408ace..7f07c4a 100644 >--- a/ext/libclementine-tagreader/tagreader.h >+++ b/ext/libclementine-tagreader/tagreader.h >@@ -19,13 +19,13 @@ > #define TAGREADER_H > > #include <QByteArray> >+#include <QNetworkAccessManager> > > #include <taglib/xiphcomment.h> > > #include "config.h" > #include "tagreadermessages.pb.h" > >-class QNetworkAccessManager; > class QString; > class QTextCodec; > class QUrl; >@@ -120,7 +120,7 @@ class TagReader { > TagLib::ID3v2::Tag* tag); > > FileRefFactory* factory_; >- QNetworkAccessManager* network_; >+ std::unique_ptr<QNetworkAccessManager> network_; > > const std::string kEmbeddedCover; > }; >diff --git a/src/core/crashreporting.cpp b/src/core/crashreporting.cpp >index 89a654c..3406230 100644 >--- a/src/core/crashreporting.cpp >+++ b/src/core/crashreporting.cpp >@@ -99,7 +99,7 @@ bool CrashReporting::Handler(const char* dump_path, const char* minidump_id, > } > > CrashSender::CrashSender(const QString& path) >- : network_(new QNetworkAccessManager(this)), >+ : network_(this), > path_(path), > file_(new QFile(path_, this)), > progress_(nullptr) {} >@@ -128,7 +128,7 @@ bool CrashSender::Start() { > progress_->show(); > > // We'll get a redirect first, so don't start POSTing data yet. >- QNetworkReply* reply = network_->get(QNetworkRequest(QUrl(kUploadURL))); >+ QNetworkReply* reply = network_.get(QNetworkRequest(QUrl(kUploadURL))); > connect(reply, SIGNAL(finished()), SLOT(RedirectFinished())); > > return true; >@@ -183,7 +183,7 @@ void CrashSender::RedirectFinished() { > progress_->setMaximum(form_data.size()); > > // Upload the data >- reply = network_->post(req, form_data); >+ reply = network_.post(req, form_data); > connect(reply, SIGNAL(uploadProgress(qint64, qint64)), > SLOT(UploadProgress(qint64))); > connect(reply, SIGNAL(finished()), progress_, SLOT(close())); >diff --git a/src/core/crashreporting.h b/src/core/crashreporting.h >index 7e0b11f..119a363 100644 >--- a/src/core/crashreporting.h >+++ b/src/core/crashreporting.h >@@ -23,9 +23,9 @@ > #include <memory> > > #include <QObject> >+#include <QNetworkAccessManager> > > class QFile; >-class QNetworkAccessManager; > class QProgressDialog; > > namespace google_breakpad { >@@ -85,7 +85,7 @@ class CrashSender : public QObject { > private: > static const char* kUploadURL; > >- QNetworkAccessManager* network_; >+ QNetworkAccessManager network_; > > QString path_; > QFile* file_; >diff --git a/src/core/database.cpp b/src/core/database.cpp >index 5a212bb..3784c25 100644 >--- a/src/core/database.cpp >+++ b/src/core/database.cpp >@@ -670,7 +670,7 @@ void Database::BackupFile(const QString& filename) { > sqlite3* source_connection = nullptr; > sqlite3* dest_connection = nullptr; > >- BOOST_SCOPE_EXIT((source_connection)(dest_connection)(task_id)(app_)) { >+ BOOST_SCOPE_EXIT((&source_connection)(&dest_connection)(task_id)(app_)) { > // Harmless to call sqlite3_close() with a nullptr pointer. > sqlite3_close(source_connection); > sqlite3_close(dest_connection); >diff --git a/src/covers/albumcoverfetcher.cpp b/src/covers/albumcoverfetcher.cpp >index 3c409bb..67668bf 100644 >--- a/src/covers/albumcoverfetcher.cpp >+++ b/src/covers/albumcoverfetcher.cpp >@@ -35,10 +35,16 @@ AlbumCoverFetcher::AlbumCoverFetcher(CoverProviders* cover_providers, > network_(network ? network : new NetworkAccessManager(this)), > next_id_(0), > request_starter_(new QTimer(this)) { >+ deleteNetwork = !network; > request_starter_->setInterval(1000); > connect(request_starter_, SIGNAL(timeout()), SLOT(StartRequests())); > } > >+AlbumCoverFetcher::~AlbumCoverFetcher() { >+ if (deleteNetwork) >+ delete network_; >+} >+ > quint64 AlbumCoverFetcher::FetchAlbumCover(const QString& artist, > const QString& album, > bool fetchall) { >diff --git a/src/covers/albumcoverfetcher.h b/src/covers/albumcoverfetcher.h >index 588c7ea..513de38 100644 >--- a/src/covers/albumcoverfetcher.h >+++ b/src/covers/albumcoverfetcher.h >@@ -86,7 +86,7 @@ class AlbumCoverFetcher : public QObject { > public: > AlbumCoverFetcher(CoverProviders* cover_providers, QObject* parent = nullptr, > QNetworkAccessManager* network = 0); >- virtual ~AlbumCoverFetcher() {} >+ virtual ~AlbumCoverFetcher(); > > static const int kMaxConcurrentRequests; > >@@ -110,6 +110,7 @@ class AlbumCoverFetcher : public QObject { > private: > void AddRequest(const CoverSearchRequest& req); > >+ bool deleteNetwork; > CoverProviders* cover_providers_; > QNetworkAccessManager* network_; > quint64 next_id_; >diff --git a/src/covers/albumcoverfetchersearch.cpp b/src/covers/albumcoverfetchersearch.cpp >index 272dac2..1d34a36 100644 >--- a/src/covers/albumcoverfetchersearch.cpp >+++ b/src/covers/albumcoverfetchersearch.cpp >@@ -45,7 +45,7 @@ AlbumCoverFetcherSearch::AlbumCoverFetcherSearch( > QObject* parent) > : QObject(parent), > request_(request), >- image_load_timeout_(new NetworkTimeouts(kImageLoadTimeoutMs, this)), >+ image_load_timeout_(kImageLoadTimeoutMs, this), > network_(network), > cancel_requested_(false) { > // we will terminate the search after kSearchTimeoutMs miliseconds if we are >@@ -162,7 +162,7 @@ void AlbumCoverFetcherSearch::FetchMoreImages() { > SLOT(ProviderCoverFetchFinished(RedirectFollower*)), > image_reply); > pending_image_loads_[image_reply] = result.provider; >- image_load_timeout_->AddReply(image_reply); >+ image_load_timeout_.AddReply(image_reply); > > statistics_.network_requests_made_++; > } >diff --git a/src/covers/albumcoverfetchersearch.h b/src/covers/albumcoverfetchersearch.h >index 8f79fce..a99836b 100644 >--- a/src/covers/albumcoverfetchersearch.h >+++ b/src/covers/albumcoverfetchersearch.h >@@ -22,6 +22,7 @@ > #define COVERS_ALBUMCOVERFETCHERSEARCH_H_ > > #include "albumcoverfetcher.h" >+#include "core/network.h" > > #include <QMap> > #include <QObject> >@@ -86,7 +87,7 @@ class AlbumCoverFetcherSearch : public QObject { > > QMap<int, CoverProvider*> pending_requests_; > QMap<RedirectFollower*, QString> pending_image_loads_; >- NetworkTimeouts* image_load_timeout_; >+ NetworkTimeouts image_load_timeout_; > > // QMap is sorted by key (score). Values are (provider_name, image) > typedef QPair<QString, QImage> CandidateImage; >diff --git a/src/covers/albumcoverloader.cpp b/src/covers/albumcoverloader.cpp >index a04cd92..c005731 100644 >--- a/src/covers/albumcoverloader.cpp >+++ b/src/covers/albumcoverloader.cpp >@@ -42,7 +42,7 @@ AlbumCoverLoader::AlbumCoverLoader(QObject* parent) > : QObject(parent), > stop_requested_(false), > next_id_(1), >- network_(new NetworkAccessManager(this)), >+ network_(this), > connected_spotify_(false) {} > > QString AlbumCoverLoader::ImageCacheDir() { >@@ -172,7 +172,7 @@ AlbumCoverLoader::TryLoadResult AlbumCoverLoader::TryLoadImage( > if (filename.toLower().startsWith("http://") || > filename.toLower().startsWith("https://")) { > QUrl url(filename); >- QNetworkReply* reply = network_->get(QNetworkRequest(url)); >+ QNetworkReply* reply = network_.get(QNetworkRequest(url)); > NewClosure(reply, SIGNAL(finished()), this, > SLOT(RemoteFetchFinished(QNetworkReply*)), reply); > >@@ -239,7 +239,7 @@ void AlbumCoverLoader::RemoteFetchFinished(QNetworkReply* reply) { > } > QNetworkRequest request = reply->request(); > request.setUrl(redirect.toUrl()); >- QNetworkReply* redirected_reply = network_->get(request); >+ QNetworkReply* redirected_reply = network_.get(request); > NewClosure(redirected_reply, SIGNAL(finished()), this, > SLOT(RemoteFetchFinished(QNetworkReply*)), redirected_reply); > >diff --git a/src/covers/albumcoverloader.h b/src/covers/albumcoverloader.h >index c5fae6b..56fc0a5 100644 >--- a/src/covers/albumcoverloader.h >+++ b/src/covers/albumcoverloader.h >@@ -23,6 +23,7 @@ > > #include "albumcoverloaderoptions.h" > #include "config.h" >+#include "core/network.h" > #include "core/song.h" > > #include <QImage> >@@ -31,7 +32,6 @@ > #include <QQueue> > #include <QUrl> > >-class NetworkAccessManager; > class QNetworkReply; > > class AlbumCoverLoader : public QObject { >@@ -109,7 +109,7 @@ class AlbumCoverLoader : public QObject { > QMap<QString, Task> remote_spotify_tasks_; > quint64 next_id_; > >- NetworkAccessManager* network_; >+ NetworkAccessManager network_; > > bool connected_spotify_; > >diff --git a/src/covers/discogscoverprovider.cpp b/src/covers/discogscoverprovider.cpp >index 95e00fe..2fd9bcd 100644 >--- a/src/covers/discogscoverprovider.cpp >+++ b/src/covers/discogscoverprovider.cpp >@@ -47,7 +47,7 @@ const char* DiscogsCoverProvider::kSecretKeyB64 = > > DiscogsCoverProvider::DiscogsCoverProvider(QObject* parent) > : CoverProvider("Discogs", false, parent), >- network_(new NetworkAccessManager(this)) {} >+ network_(this) {} > > bool DiscogsCoverProvider::StartSearch(const QString& artist, > const QString& album, int s_id) { >@@ -128,7 +128,7 @@ void DiscogsCoverProvider::SendSearchRequest(DiscogsCoverSearchContext* s_ctx) { > QUrl::toPercentEncoding(signature.toBase64())); > > url.setQuery(url_query); >- QNetworkReply* reply = network_->get(QNetworkRequest(url)); >+ QNetworkReply* reply = network_.get(QNetworkRequest(url)); > > NewClosure(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, > SLOT(SearchRequestError(QNetworkReply::NetworkError, >@@ -175,7 +175,7 @@ void DiscogsCoverProvider::SendReleaseRequest( > QUrl::toPercentEncoding(signature.toBase64())); > > url.setQuery(url_query); >- QNetworkReply* reply = network_->get(QNetworkRequest(url)); >+ QNetworkReply* reply = network_.get(QNetworkRequest(url)); > > NewClosure(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, > SLOT(ReleaseRequestError(QNetworkReply::NetworkError, >diff --git a/src/covers/discogscoverprovider.h b/src/covers/discogscoverprovider.h >index 3b16c05..8835421 100644 >--- a/src/covers/discogscoverprovider.h >+++ b/src/covers/discogscoverprovider.h >@@ -23,6 +23,7 @@ > #include <QXmlStreamReader> > > #include "coverprovider.h" >+#include "core/network.h" > > class QNetworkAccessManager; > >@@ -75,7 +76,7 @@ class DiscogsCoverProvider : public CoverProvider { > static const char* kAccessKeyB64; > static const char* kSecretKeyB64; > >- QNetworkAccessManager* network_; >+ NetworkAccessManager network_; > QHash<int, DiscogsCoverSearchContext*> requests_search_; > QHash<int, DiscogsCoverReleaseContext*> requests_release_; > >diff --git a/src/covers/kittenloader.cpp b/src/covers/kittenloader.cpp >index ac69023..0470a98 100644 >--- a/src/covers/kittenloader.cpp >+++ b/src/covers/kittenloader.cpp >@@ -63,7 +63,7 @@ quint64 KittenLoader::LoadKitten(const AlbumCoverLoaderOptions& options) { > > void KittenLoader::FetchMoreKittens() { > QNetworkRequest req = QNetworkRequest(QUrl(kFlickrKittenUrl)); >- QNetworkReply* reply = network_->get(req); >+ QNetworkReply* reply = network_.get(req); > NewClosure(reply, SIGNAL(finished()), this, > SLOT(KittensRetrieved(QNetworkReply*)), reply); > } >diff --git a/src/covers/musicbrainzcoverprovider.cpp b/src/covers/musicbrainzcoverprovider.cpp >index 73d945e..a80b8c8 100644 >--- a/src/covers/musicbrainzcoverprovider.cpp >+++ b/src/covers/musicbrainzcoverprovider.cpp >@@ -38,7 +38,7 @@ static const char* kAlbumCoverUrl = > > MusicbrainzCoverProvider::MusicbrainzCoverProvider(QObject* parent) > : CoverProvider("MusicBrainz", true, parent), >- network_(new NetworkAccessManager(this)) {} >+ network_(this) {} > > bool MusicbrainzCoverProvider::StartSearch(const QString& artist, > const QString& album, int id) { >@@ -53,7 +53,7 @@ bool MusicbrainzCoverProvider::StartSearch(const QString& artist, > url.setQuery(url_query); > QNetworkRequest request(url); > >- QNetworkReply* reply = network_->get(request); >+ QNetworkReply* reply = network_.get(request); > NewClosure(reply, SIGNAL(finished()), this, > SLOT(ReleaseSearchFinished(QNetworkReply*, int)), reply, id); > >@@ -80,7 +80,7 @@ void MusicbrainzCoverProvider::ReleaseSearchFinished(QNetworkReply* reply, > > for (const QString& release_id : releases) { > QUrl url(QString(kAlbumCoverUrl).arg(release_id)); >- QNetworkReply* reply = network_->head(QNetworkRequest(url)); >+ QNetworkReply* reply = network_.head(QNetworkRequest(url)); > image_checks_.insert(id, reply); > NewClosure(reply, SIGNAL(finished()), this, SLOT(ImageCheckFinished(int)), > id); >diff --git a/src/covers/musicbrainzcoverprovider.h b/src/covers/musicbrainzcoverprovider.h >index ca75411..efc1606 100644 >--- a/src/covers/musicbrainzcoverprovider.h >+++ b/src/covers/musicbrainzcoverprovider.h >@@ -20,10 +20,10 @@ > #define COVERS_MUSICBRAINZCOVERPROVIDER_H_ > > #include "coverprovider.h" >+#include "core/network.h" > > #include <QMultiMap> > >-class QNetworkAccessManager; > class QNetworkReply; > > class MusicbrainzCoverProvider : public CoverProvider { >@@ -40,7 +40,7 @@ class MusicbrainzCoverProvider : public CoverProvider { > void ImageCheckFinished(int id); > > private: >- QNetworkAccessManager* network_; >+ NetworkAccessManager network_; > QMultiMap<int, QNetworkReply*> image_checks_; > QMap<int, QString> cover_names_; > }; >diff --git a/src/internet/box/boxservice.cpp b/src/internet/box/boxservice.cpp >index 65eae3f..179ec6d 100644 >--- a/src/internet/box/boxservice.cpp >+++ b/src/internet/box/boxservice.cpp >@@ -110,7 +110,7 @@ void BoxService::ConnectFinished(OAuthenticator* oauth) { > QNetworkRequest request(url); > AddAuthorizationHeader(&request); > >- QNetworkReply* reply = network_->get(request); >+ QNetworkReply* reply = network_.get(request); > NewClosure(reply, SIGNAL(finished()), this, > SLOT(FetchUserInfoFinished(QNetworkReply*)), reply); > } else { >@@ -169,7 +169,7 @@ void BoxService::InitialiseEventsCursor() { > url.setQuery(url_query); > QNetworkRequest request(url); > AddAuthorizationHeader(&request); >- QNetworkReply* reply = network_->get(request); >+ QNetworkReply* reply = network_.get(request); > NewClosure(reply, SIGNAL(finished()), this, > SLOT(InitialiseEventsFinished(QNetworkReply*)), reply); > } >@@ -201,7 +201,7 @@ void BoxService::FetchRecursiveFolderItems(const int folder_id, > url.setQuery(url_query); > QNetworkRequest request(url); > AddAuthorizationHeader(&request); >- QNetworkReply* reply = network_->get(request); >+ QNetworkReply* reply = network_.get(request); > NewClosure(reply, SIGNAL(finished()), this, > SLOT(FetchFolderItemsFinished(QNetworkReply*, int)), reply, > folder_id); >@@ -255,7 +255,7 @@ QNetworkReply* BoxService::FetchContentUrlForFile(const QString& file_id) { > QUrl content_url(QString(kFileContent).arg(file_id)); > QNetworkRequest request(content_url); > AddAuthorizationHeader(&request); >- QNetworkReply* reply = network_->get(request); >+ QNetworkReply* reply = network_.get(request); > return reply; > } > >@@ -281,7 +281,7 @@ void BoxService::UpdateFilesFromCursor(const QString& cursor) { > url.setQuery(url_query); > QNetworkRequest request(url); > AddAuthorizationHeader(&request); >- QNetworkReply* reply = network_->get(request); >+ QNetworkReply* reply = network_.get(request); > NewClosure(reply, SIGNAL(finished()), this, > SLOT(FetchEventsFinished(QNetworkReply*)), reply); > } >diff --git a/src/internet/core/cloudfileservice.cpp b/src/internet/core/cloudfileservice.cpp >index 896abf1..6a4ecbc 100644 >--- a/src/internet/core/cloudfileservice.cpp >+++ b/src/internet/core/cloudfileservice.cpp >@@ -43,7 +43,7 @@ CloudFileService::CloudFileService(Application* app, InternetModel* parent, > SettingsDialog::Page settings_page) > : InternetService(service_name, app, parent, parent), > root_(nullptr), >- network_(new NetworkAccessManager(this)), >+ network_(this), > library_sort_model_(new QSortFilterProxyModel(this)), > playlist_manager_(app->playlist_manager()), > task_manager_(app->task_manager()), >diff --git a/src/internet/core/cloudfileservice.h b/src/internet/core/cloudfileservice.h >index 1f15346..8f8b891 100644 >--- a/src/internet/core/cloudfileservice.h >+++ b/src/internet/core/cloudfileservice.h >@@ -26,6 +26,7 @@ > > #include <QMenu> > >+#include "core/network.h" > #include "core/tagreaderclient.h" > #include "ui/albumcovermanager.h" > >@@ -77,7 +78,7 @@ signals: > > protected: > QStandardItem* root_; >- NetworkAccessManager* network_; >+ NetworkAccessManager network_; > > LibraryBackend* library_backend_; > LibraryModel* library_model_; >diff --git a/src/internet/digitally/digitallyimportedclient.cpp b/src/internet/digitally/digitallyimportedclient.cpp >index 8ee96d9..c604236 100644 >--- a/src/internet/digitally/digitallyimportedclient.cpp >+++ b/src/internet/digitally/digitallyimportedclient.cpp >@@ -45,7 +45,7 @@ const char* DigitallyImportedClient::kChannelListUrl = > DigitallyImportedClient::DigitallyImportedClient(const QString& service_name, > QObject* parent) > : QObject(parent), >- network_(new NetworkAccessManager(this)), >+ network_(this), > service_name_(service_name) {} > > void DigitallyImportedClient::SetAuthorisationHeader( >@@ -65,7 +65,7 @@ QNetworkReply* DigitallyImportedClient::Auth(const QString& username, > QByteArray postdata = "username=" + QUrl::toPercentEncoding(username) + > "&password=" + QUrl::toPercentEncoding(password); > >- return network_->post(req, postdata); >+ return network_.post(req, postdata); > } > > DigitallyImportedClient::AuthReply DigitallyImportedClient::ParseAuthReply( >@@ -115,7 +115,7 @@ QNetworkReply* DigitallyImportedClient::GetChannelList() { > QNetworkRequest req(QUrl(QString(kChannelListUrl).arg(service_name_))); > SetAuthorisationHeader(&req); > >- return network_->get(req); >+ return network_.get(req); > } > > DigitallyImportedClient::ChannelList DigitallyImportedClient::ParseChannelList( >diff --git a/src/internet/digitally/digitallyimportedclient.h b/src/internet/digitally/digitallyimportedclient.h >index e090242..7ed9c85 100644 >--- a/src/internet/digitally/digitallyimportedclient.h >+++ b/src/internet/digitally/digitallyimportedclient.h >@@ -25,6 +25,8 @@ > #include <QSettings> > #include <QUrl> > >+#include "core/network.h" >+ > class QNetworkAccessManager; > class QNetworkReply; > class QNetworkRequest; >@@ -75,7 +77,7 @@ class DigitallyImportedClient : public QObject { > void SetAuthorisationHeader(QNetworkRequest* req) const; > > private: >- QNetworkAccessManager* network_; >+ NetworkAccessManager network_; > > QString service_name_; > }; >diff --git a/src/internet/digitally/digitallyimportedservicebase.cpp b/src/internet/digitally/digitallyimportedservicebase.cpp >index 6493387..245603c 100644 >--- a/src/internet/digitally/digitallyimportedservicebase.cpp >+++ b/src/internet/digitally/digitallyimportedservicebase.cpp >@@ -53,7 +53,7 @@ DigitallyImportedServiceBase::DigitallyImportedServiceBase( > icon_(icon), > service_description_(description), > api_service_name_(api_service_name), >- network_(new NetworkAccessManager(this)), >+ network_(this), > url_handler_(new DigitallyImportedUrlHandler(app, this)), > premium_audio_type_(2), > has_premium_(has_premium), >@@ -229,7 +229,7 @@ void DigitallyImportedServiceBase::LoadStation(const QString& key) { > > qLog(Debug) << "Getting playlist URL" << playlist_url; > >- QNetworkReply* reply = network_->get(QNetworkRequest(playlist_url)); >+ QNetworkReply* reply = network_.get(QNetworkRequest(playlist_url)); > NewClosure(reply, SIGNAL(finished()), this, > SLOT(LoadPlaylistFinished(QNetworkReply*)), reply); > } >diff --git a/src/internet/digitally/digitallyimportedservicebase.h b/src/internet/digitally/digitallyimportedservicebase.h >index 9cd2d0f..5dc1f9e 100644 >--- a/src/internet/digitally/digitallyimportedservicebase.h >+++ b/src/internet/digitally/digitallyimportedservicebase.h >@@ -23,6 +23,7 @@ > #include <memory> > > #include "core/cachedlist.h" >+#include "core/network.h" > #include "digitallyimportedclient.h" > #include "internet/core/internetservice.h" > >@@ -91,7 +92,7 @@ class DigitallyImportedServiceBase : public InternetService { > > QStringList premium_playlists_; > >- QNetworkAccessManager* network_; >+ NetworkAccessManager network_; > DigitallyImportedUrlHandler* url_handler_; > > int premium_audio_type_; >diff --git a/src/internet/icecast/icecastservice.cpp b/src/internet/icecast/icecastservice.cpp >index 52c76d4..02392b2 100644 >--- a/src/internet/icecast/icecastservice.cpp >+++ b/src/internet/icecast/icecastservice.cpp >@@ -55,7 +55,7 @@ const char* IcecastService::kHomepage = "http://dir.xiph.org/"; > > IcecastService::IcecastService(Application* app, InternetModel* parent) > : InternetService(kServiceName, app, parent, parent), >- network_(new NetworkAccessManager(this)), >+ network_(this), > context_menu_(nullptr), > backend_(nullptr), > model_(nullptr), >@@ -108,7 +108,7 @@ void IcecastService::RequestDirectory(const QUrl& url, int task_id) { > req.setAttribute(QNetworkRequest::CacheLoadControlAttribute, > QNetworkRequest::AlwaysNetwork); > >- QNetworkReply* reply = network_->get(req); >+ QNetworkReply* reply = network_.get(req); > NewClosure(reply, SIGNAL(finished()), this, > SLOT(DownloadDirectoryFinished(QNetworkReply*, int)), reply, > task_id); >diff --git a/src/internet/icecast/icecastservice.h b/src/internet/icecast/icecastservice.h >index bdf4314..7dc5e78 100644 >--- a/src/internet/icecast/icecastservice.h >+++ b/src/internet/icecast/icecastservice.h >@@ -22,6 +22,7 @@ > #define INTERNET_ICECAST_ICECASTSERVICE_H_ > > #include "internet/core/internetservice.h" >+#include "core/network.h" > > #include <QXmlStreamReader> > >@@ -72,7 +73,7 @@ class IcecastService : public InternetService { > IcecastBackend::Station ReadStation(QXmlStreamReader* reader) const; > > QStandardItem* root_; >- NetworkAccessManager* network_; >+ NetworkAccessManager network_; > QMenu* context_menu_; > > IcecastBackend* backend_; >diff --git a/src/internet/intergalacticfm/intergalacticfmservice.h b/src/internet/intergalacticfm/intergalacticfmservice.h >index f5fb9db..872ea00 100644 >--- a/src/internet/intergalacticfm/intergalacticfmservice.h >+++ b/src/internet/intergalacticfm/intergalacticfmservice.h >@@ -21,13 +21,13 @@ > #define INTERNET_INTERGALACTICFM_INTERGALACTICFMSERVICE_H_ > > #include <QXmlStreamReader> >+#include <QNetworkAccessManager> > > #include "internet/core/internetservice.h" > #include "core/cachedlist.h" > > class IntergalacticFMUrlHandler; > >-class QNetworkAccessManager; > class QNetworkReply; > class QMenu; > >@@ -64,7 +64,7 @@ class IntergalacticFMServiceBase : public InternetService { > void ShowContextMenu(const QPoint& global_pos); > > PlaylistItem::Options playlistitem_options() const; >- QNetworkAccessManager* network() const { return network_; } >+ QNetworkAccessManager* network() const { return network_.get(); } > > void ReloadSettings(); > >@@ -93,7 +93,7 @@ signals: > QStandardItem* root_; > QMenu* context_menu_; > >- QNetworkAccessManager* network_; >+ std::unique_ptr<QNetworkAccessManager> network_; > > CachedList<Stream> streams_; > >diff --git a/src/internet/jamendo/jamendoservice.cpp b/src/internet/jamendo/jamendoservice.cpp >index eea8635..a09155d 100644 >--- a/src/internet/jamendo/jamendoservice.cpp >+++ b/src/internet/jamendo/jamendoservice.cpp >@@ -80,7 +80,7 @@ const int JamendoService::kApproxDatabaseSize = 450000; > > JamendoService::JamendoService(Application* app, InternetModel* parent) > : InternetService(kServiceName, app, parent, parent), >- network_(new NetworkAccessManager(this)), >+ network_(this), > context_menu_(nullptr), > library_backend_(nullptr), > library_filter_(nullptr), >@@ -189,7 +189,7 @@ void JamendoService::DownloadDirectory() { > req.setAttribute(QNetworkRequest::CacheLoadControlAttribute, > QNetworkRequest::AlwaysNetwork); > >- QNetworkReply* reply = network_->get(req); >+ QNetworkReply* reply = network_.get(req); > connect(reply, SIGNAL(finished()), SLOT(DownloadDirectoryFinished())); > connect(reply, SIGNAL(downloadProgress(qint64, qint64)), > SLOT(DownloadDirectoryProgress(qint64, qint64))); >diff --git a/src/internet/jamendo/jamendoservice.h b/src/internet/jamendo/jamendoservice.h >index 767db53..1833149 100644 >--- a/src/internet/jamendo/jamendoservice.h >+++ b/src/internet/jamendo/jamendoservice.h >@@ -23,6 +23,7 @@ > #define INTERNET_JAMENDO_JAMENDOSERVICE_H_ > > #include "internet/core/internetservice.h" >+#include "core/network.h" > > #include <QXmlStreamReader> > >@@ -32,7 +33,6 @@ class LibraryBackend; > class LibraryFilterWidget; > class LibraryModel; > class LibrarySearchProvider; >-class NetworkAccessManager; > class SearchProvider; > > class QIODevice; >@@ -103,7 +103,7 @@ class JamendoService : public InternetService { > void SearchProviderToggled(const SearchProvider* provider, bool enabled); > > private: >- NetworkAccessManager* network_; >+ NetworkAccessManager network_; > > QMenu* context_menu_; > >diff --git a/src/internet/podcasts/gpoddersearchpage.cpp b/src/internet/podcasts/gpoddersearchpage.cpp >index 5f453c0..bbf370a 100644 >--- a/src/internet/podcasts/gpoddersearchpage.cpp >+++ b/src/internet/podcasts/gpoddersearchpage.cpp >@@ -31,8 +31,8 @@ > GPodderSearchPage::GPodderSearchPage(Application* app, QWidget* parent) > : AddPodcastPage(app, parent), > ui_(new Ui_GPodderSearchPage), >- network_(new NetworkAccessManager(this)), >- api_(new mygpo::ApiRequest(network_)) { >+ network_(this), >+ api_(new mygpo::ApiRequest(&network_)) { > ui_->setupUi(this); > connect(ui_->search, SIGNAL(clicked()), SLOT(SearchClicked())); > setWindowIcon(IconLoader::Load("mygpo", IconLoader::Provider)); >diff --git a/src/internet/podcasts/gpoddersearchpage.h b/src/internet/podcasts/gpoddersearchpage.h >index 1e2d2a7..7408f99 100644 >--- a/src/internet/podcasts/gpoddersearchpage.h >+++ b/src/internet/podcasts/gpoddersearchpage.h >@@ -21,11 +21,10 @@ > #define INTERNET_PODCASTS_GPODDERSEARCHPAGE_H_ > > #include "addpodcastpage.h" >+#include "core/network.h" > > #include <ApiRequest.h> > >-class QNetworkAccessManager; >- > class Ui_GPodderSearchPage; > > class GPodderSearchPage : public AddPodcastPage { >@@ -45,7 +44,7 @@ class GPodderSearchPage : public AddPodcastPage { > private: > Ui_GPodderSearchPage* ui_; > >- QNetworkAccessManager* network_; >+ NetworkAccessManager network_; > mygpo::ApiRequest* api_; > }; > >diff --git a/src/internet/podcasts/gpoddersync.cpp b/src/internet/podcasts/gpoddersync.cpp >index 6e54d41..f96a412 100644 >--- a/src/internet/podcasts/gpoddersync.cpp >+++ b/src/internet/podcasts/gpoddersync.cpp >@@ -42,7 +42,7 @@ const int GPodderSync::kGetUpdatesInterval = > GPodderSync::GPodderSync(Application* app, QObject* parent) > : QObject(parent), > app_(app), >- network_(new NetworkAccessManager(this)), >+ network_(this), > backend_(app_->podcast_backend()), > loader_(new PodcastUrlLoader(this)), > get_updates_timer_(new QTimer(this)), >@@ -97,14 +97,14 @@ void GPodderSync::ReloadSettings() { > last_successful_get_ = s.value("gpodder_last_get").toDateTime(); > > if (!username_.isEmpty() && !password_.isEmpty()) { >- api_.reset(new mygpo::ApiRequest(username_, password_, network_)); >+ api_.reset(new mygpo::ApiRequest(username_, password_, &network_)); > } > } > > QNetworkReply* GPodderSync::Login(const QString& username, > const QString& password, > const QString& device_name) { >- api_.reset(new mygpo::ApiRequest(username, password, network_)); >+ api_.reset(new mygpo::ApiRequest(username, password, &network_)); > > QNetworkReply* reply = api_->renameDevice( > username, DeviceId(), device_name, >diff --git a/src/internet/podcasts/gpoddersync.h b/src/internet/podcasts/gpoddersync.h >index d861324..dfd3f41 100644 >--- a/src/internet/podcasts/gpoddersync.h >+++ b/src/internet/podcasts/gpoddersync.h >@@ -21,6 +21,7 @@ > #define INTERNET_PODCASTS_GPODDERSYNC_H_ > > #include "podcastepisode.h" >+#include "core/network.h" > > #include <QDateTime> > #include <QObject> >@@ -100,7 +101,7 @@ class GPodderSync : public QObject { > > private: > Application* app_; >- QNetworkAccessManager* network_; >+ NetworkAccessManager network_; > QScopedPointer<mygpo::ApiRequest> api_; > > PodcastBackend* backend_; >diff --git a/src/internet/podcasts/gpoddertoptagspage.cpp b/src/internet/podcasts/gpoddertoptagspage.cpp >index 506a46d..86d4528 100644 >--- a/src/internet/podcasts/gpoddertoptagspage.cpp >+++ b/src/internet/podcasts/gpoddertoptagspage.cpp >@@ -30,8 +30,8 @@ const int GPodderTopTagsPage::kMaxTagCount = 100; > > GPodderTopTagsPage::GPodderTopTagsPage(Application* app, QWidget* parent) > : AddPodcastPage(app, parent), >- network_(new NetworkAccessManager(this)), >- api_(new mygpo::ApiRequest(network_)), >+ network_(this), >+ api_(new mygpo::ApiRequest(&network_)), > done_initial_load_(false) { > setWindowTitle(tr("gpodder.net directory")); > setWindowIcon(IconLoader::Load("mygpo", IconLoader::Provider)); >diff --git a/src/internet/podcasts/gpoddertoptagspage.h b/src/internet/podcasts/gpoddertoptagspage.h >index 9248cdb..682b5e3 100644 >--- a/src/internet/podcasts/gpoddertoptagspage.h >+++ b/src/internet/podcasts/gpoddertoptagspage.h >@@ -25,8 +25,7 @@ > #include <ApiRequest.h> > > #include "addpodcastpage.h" >- >-class QNetworkAccessManager; >+#include "core/network.h" > > class GPodderTopTagsPage : public AddPodcastPage { > Q_OBJECT >@@ -45,7 +44,7 @@ class GPodderTopTagsPage : public AddPodcastPage { > void TagListFailed(mygpo::TagListPtr tag_list); > > private: >- QNetworkAccessManager* network_; >+ NetworkAccessManager network_; > mygpo::ApiRequest* api_; > > bool done_initial_load_; >diff --git a/src/internet/podcasts/itunessearchpage.cpp b/src/internet/podcasts/itunessearchpage.cpp >index 5be00f7..266c70e 100644 >--- a/src/internet/podcasts/itunessearchpage.cpp >+++ b/src/internet/podcasts/itunessearchpage.cpp >@@ -41,7 +41,7 @@ const char* ITunesSearchPage::kUrlBase = > ITunesSearchPage::ITunesSearchPage(Application* app, QWidget* parent) > : AddPodcastPage(app, parent), > ui_(new Ui_ITunesSearchPage), >- network_(new NetworkAccessManager(this)) { >+ network_(this) { > ui_->setupUi(this); > connect(ui_->search, SIGNAL(clicked()), SLOT(SearchClicked())); > setWindowIcon(IconLoader::Load("itunes", IconLoader::Provider)); >@@ -57,7 +57,7 @@ void ITunesSearchPage::SearchClicked() { > url_query.addQueryItem("term", ui_->query->text()); > url.setQuery(url_query); > >- QNetworkReply* reply = network_->get(QNetworkRequest(url)); >+ QNetworkReply* reply = network_.get(QNetworkRequest(url)); > NewClosure(reply, SIGNAL(finished()), this, > SLOT(SearchFinished(QNetworkReply*)), reply); > } >diff --git a/src/internet/podcasts/itunessearchpage.h b/src/internet/podcasts/itunessearchpage.h >index 1fbe6ed..6d761e1 100644 >--- a/src/internet/podcasts/itunessearchpage.h >+++ b/src/internet/podcasts/itunessearchpage.h >@@ -21,10 +21,10 @@ > #define INTERNET_PODCASTS_ITUNESSEARCHPAGE_H_ > > #include "addpodcastpage.h" >+#include "core/network.h" > > class Ui_ITunesSearchPage; > >-class QNetworkAccessManager; > class QNetworkReply; > > class ITunesSearchPage : public AddPodcastPage { >@@ -45,7 +45,7 @@ class ITunesSearchPage : public AddPodcastPage { > private: > Ui_ITunesSearchPage* ui_; > >- QNetworkAccessManager* network_; >+ NetworkAccessManager network_; > }; > > #endif // INTERNET_PODCASTS_ITUNESSEARCHPAGE_H_ >diff --git a/src/internet/podcasts/podcastdownloader.cpp b/src/internet/podcasts/podcastdownloader.cpp >index 1fbb2fe..e98a004 100644 >--- a/src/internet/podcasts/podcastdownloader.cpp >+++ b/src/internet/podcasts/podcastdownloader.cpp >@@ -43,8 +43,8 @@ Task::Task(PodcastEpisode episode, QFile* file, PodcastBackend* backend) > episode_(episode), > req_(QNetworkRequest(episode.url())), > backend_(backend), >- network_(new NetworkAccessManager(this)), >- repl(new RedirectFollower(network_->get(req_))) { >+ network_(this), >+ repl(new RedirectFollower(network_.get(req_))) { > connect(repl.get(), SIGNAL(readyRead()), SLOT(reading())); > connect(repl.get(), SIGNAL(finished()), SLOT(finishedInternal())); > connect(repl.get(), SIGNAL(downloadProgress(qint64, qint64)), >@@ -115,7 +115,7 @@ PodcastDownloader::PodcastDownloader(Application* app, QObject* parent) > : QObject(parent), > app_(app), > backend_(app_->podcast_backend()), >- network_(new NetworkAccessManager(this)), >+ network_(this), > disallowed_filename_characters_("[^a-zA-Z0-9_~ -]"), > auto_download_(false) { > connect(backend_, SIGNAL(EpisodesAdded(PodcastEpisodeList)), >diff --git a/src/internet/podcasts/podcastdownloader.h b/src/internet/podcasts/podcastdownloader.h >index 5db4a5d..02af310 100644 >--- a/src/internet/podcasts/podcastdownloader.h >+++ b/src/internet/podcasts/podcastdownloader.h >@@ -41,8 +41,6 @@ > class Application; > class PodcastBackend; > >-class QNetworkAccessManager; >- > namespace PodcastDownload { > enum State { NotDownloading, Queued, Downloading, Finished }; > } >@@ -72,7 +70,7 @@ class Task : public QObject { > PodcastEpisode episode_; > QNetworkRequest req_; > PodcastBackend* backend_; >- std::unique_ptr<NetworkAccessManager> network_; >+ NetworkAccessManager network_; > std::unique_ptr<RedirectFollower> repl; > }; > >@@ -111,7 +109,7 @@ class PodcastDownloader : public QObject { > private: > Application* app_; > PodcastBackend* backend_; >- QNetworkAccessManager* network_; >+ NetworkAccessManager network_; > > QRegExp disallowed_filename_characters_; > >diff --git a/src/internet/podcasts/podcasturlloader.cpp b/src/internet/podcasts/podcasturlloader.cpp >index c08265f..b42d6d1 100644 >--- a/src/internet/podcasts/podcasturlloader.cpp >+++ b/src/internet/podcasts/podcasturlloader.cpp >@@ -32,7 +32,7 @@ const int PodcastUrlLoader::kMaxRedirects = 5; > > PodcastUrlLoader::PodcastUrlLoader(QObject* parent) > : QObject(parent), >- network_(new NetworkAccessManager(this)), >+ network_(this), > parser_(new PodcastParser), > html_link_re_("<link (.*)>"), > html_link_rel_re_("rel\\s*=\\s*['\"]?\\s*alternate"), >@@ -125,7 +125,7 @@ void PodcastUrlLoader::NextRequest(const QUrl& url, RequestState* state) { > QNetworkRequest req(url); > req.setAttribute(QNetworkRequest::CacheLoadControlAttribute, > QNetworkRequest::AlwaysNetwork); >- QNetworkReply* network_reply = network_->get(req); >+ QNetworkReply* network_reply = network_.get(req); > > NewClosure(network_reply, SIGNAL(finished()), this, > SLOT(RequestFinished(RequestState*, QNetworkReply*)), state, >diff --git a/src/internet/podcasts/podcasturlloader.h b/src/internet/podcasts/podcasturlloader.h >index 4c7cff9..faa8013 100644 >--- a/src/internet/podcasts/podcasturlloader.h >+++ b/src/internet/podcasts/podcasturlloader.h >@@ -25,10 +25,10 @@ > > #include "opmlcontainer.h" > #include "podcast.h" >+#include "core/network.h" > > class PodcastParser; > >-class QNetworkAccessManager; > class QNetworkReply; > > class PodcastUrlLoaderReply : public QObject { >@@ -101,7 +101,7 @@ class PodcastUrlLoader : public QObject { > void NextRequest(const QUrl& url, RequestState* state); > > private: >- QNetworkAccessManager* network_; >+ NetworkAccessManager network_; > PodcastParser* parser_; > > QRegExp html_link_re_; >diff --git a/src/internet/seafile/seafileservice.cpp b/src/internet/seafile/seafileservice.cpp >index 28a17d8..fe5475f 100644 >--- a/src/internet/seafile/seafileservice.cpp >+++ b/src/internet/seafile/seafileservice.cpp >@@ -115,7 +115,7 @@ bool SeafileService::GetToken(const QString& mail, const QString& password, > QNetworkRequest request(url); > AddAuthorizationHeader(&request); > >- QNetworkReply* reply = network_->post(request, url_query.toString().toLatin1()); >+ QNetworkReply* reply = network_.post(request, url_query.toString().toLatin1()); > WaitForSignal(reply, SIGNAL(finished())); > > if (!CheckReply(&reply)) { >@@ -149,7 +149,7 @@ void SeafileService::GetLibraries() { > QUrl url(server_ + kListReposUrl); > QNetworkRequest request(url); > AddAuthorizationHeader(&request); >- QNetworkReply* reply = network_->get(request); >+ QNetworkReply* reply = network_.get(request); > > NewClosure(reply, SIGNAL(finished()), this, > SLOT(GetLibrariesFinished(QNetworkReply*)), reply); >@@ -299,7 +299,7 @@ QNetworkReply* SeafileService::PrepareFetchFolderItems(const QString& library, > > QNetworkRequest request(url); > AddAuthorizationHeader(&request); >- QNetworkReply* reply = network_->get(request); >+ QNetworkReply* reply = network_.get(request); > > return reply; > } >@@ -422,7 +422,7 @@ QNetworkReply* SeafileService::PrepareFetchContentForFile( > > QNetworkRequest request(content_url); > AddAuthorizationHeader(&request); >- QNetworkReply* reply = network_->get(request); >+ QNetworkReply* reply = network_.get(request); > > return reply; > } >@@ -488,7 +488,7 @@ QNetworkReply* SeafileService::PrepareFetchContentUrlForFile( > > QNetworkRequest request(content_url); > AddAuthorizationHeader(&request); >- QNetworkReply* reply = network_->get(request); >+ QNetworkReply* reply = network_.get(request); > > return reply; > } >@@ -641,7 +641,7 @@ bool SeafileService::CheckReply(QNetworkReply** reply, int tries) { > (*reply)->deleteLater(); > > // We execute the reply again >- *reply = network_->get((*reply)->request()); >+ *reply = network_.get((*reply)->request()); > WaitForSignal(*reply, SIGNAL(finished())); > > return CheckReply(reply, ++tries); >diff --git a/src/internet/skydrive/skydriveservice.cpp b/src/internet/skydrive/skydriveservice.cpp >index 3e8c437..a280d86 100644 >--- a/src/internet/skydrive/skydriveservice.cpp >+++ b/src/internet/skydrive/skydriveservice.cpp >@@ -99,7 +99,7 @@ void SkydriveService::ConnectFinished(OAuthenticator* oauth) { > QNetworkRequest request(url); > AddAuthorizationHeader(&request); > >- QNetworkReply* reply = network_->get(request); >+ QNetworkReply* reply = network_.get(request); > NewClosure(reply, SIGNAL(finished()), this, > SLOT(FetchUserInfoFinished(QNetworkReply*)), reply); > } >@@ -130,7 +130,7 @@ void SkydriveService::ListFiles(const QString& folder) { > QNetworkRequest request(url); > AddAuthorizationHeader(&request); > >- QNetworkReply* reply = network_->get(request); >+ QNetworkReply* reply = network_.get(request); > NewClosure(reply, SIGNAL(finished()), this, > SLOT(ListFilesFinished(QNetworkReply*)), reply); > } >@@ -173,7 +173,7 @@ QUrl SkydriveService::GetStreamingUrlFromSongId(const QString& file_id) { > QUrl url(QString(kSkydriveBase) + file_id); > QNetworkRequest request(url); > AddAuthorizationHeader(&request); >- std::unique_ptr<QNetworkReply> reply(network_->get(request)); >+ std::unique_ptr<QNetworkReply> reply(network_.get(request)); > WaitForSignal(reply.get(), SIGNAL(finished())); > > QJsonObject json_response = QJsonDocument::fromBinaryData(reply.get()->readAll()).object(); >diff --git a/src/internet/spotify/spotifyblobdownloader.cpp b/src/internet/spotify/spotifyblobdownloader.cpp >index 3c63392..69d1c99 100644 >--- a/src/internet/spotify/spotifyblobdownloader.cpp >+++ b/src/internet/spotify/spotifyblobdownloader.cpp >@@ -57,7 +57,7 @@ SpotifyBlobDownloader::SpotifyBlobDownloader(const QString& version, > : QObject(parent), > version_(version), > path_(path), >- network_(new NetworkAccessManager(this)), >+ network_(this), > progress_(new QProgressDialog(tr("Downloading Spotify plugin"), > tr("Cancel"), 0, 0)) { > progress_->setWindowTitle(QCoreApplication::applicationName()); >@@ -95,7 +95,7 @@ void SpotifyBlobDownloader::Start() { > filename); > qLog(Info) << "Downloading" << url; > >- QNetworkReply* reply = network_->get(QNetworkRequest(url)); >+ QNetworkReply* reply = network_.get(QNetworkRequest(url)); > connect(reply, SIGNAL(finished()), SLOT(ReplyFinished())); > connect(reply, SIGNAL(downloadProgress(qint64, qint64)), > SLOT(ReplyProgress())); >diff --git a/src/internet/spotify/spotifyblobdownloader.h b/src/internet/spotify/spotifyblobdownloader.h >index c51ea4f..93617df 100644 >--- a/src/internet/spotify/spotifyblobdownloader.h >+++ b/src/internet/spotify/spotifyblobdownloader.h >@@ -23,7 +23,8 @@ > #include <QMap> > #include <QObject> > >-class QNetworkAccessManager; >+#include "core/network.h" >+ > class QNetworkReply; > class QProgressDialog; > >@@ -61,7 +62,7 @@ signals: > QString version_; > QString path_; > >- QNetworkAccessManager* network_; >+ NetworkAccessManager network_; > QList<QNetworkReply*> replies_; > > QProgressDialog* progress_; >diff --git a/src/internet/subsonic/subsonicservice.cpp b/src/internet/subsonic/subsonicservice.cpp >index 1cf7ac5..3bdb6d7 100644 >--- a/src/internet/subsonic/subsonicservice.cpp >+++ b/src/internet/subsonic/subsonicservice.cpp >@@ -151,7 +151,9 @@ SubsonicService::SubsonicService(Application* app, InternetModel* parent) > IconLoader::Load("subsonic", IconLoader::Provider), true, app_, this)); > } > >-SubsonicService::~SubsonicService() {} >+SubsonicService::~SubsonicService() { >+ delete network_; >+} > > QStandardItem* SubsonicService::CreateRootItem() { > root_ = new QStandardItem(IconLoader::Load("subsonic", IconLoader::Provider), >diff --git a/src/musicbrainz/acoustidclient.cpp b/src/musicbrainz/acoustidclient.cpp >index 8fa8fa6..a670869 100644 >--- a/src/musicbrainz/acoustidclient.cpp >+++ b/src/musicbrainz/acoustidclient.cpp >@@ -39,10 +39,10 @@ const int AcoustidClient::kDefaultTimeout = 5000; // msec > > AcoustidClient::AcoustidClient(QObject* parent) > : QObject(parent), >- network_(new NetworkAccessManager(this)), >- timeouts_(new NetworkTimeouts(kDefaultTimeout, this)) {} >+ network_(this), >+ timeouts_(kDefaultTimeout, this) {} > >-void AcoustidClient::SetTimeout(int msec) { timeouts_->SetTimeout(msec); } >+void AcoustidClient::SetTimeout(int msec) { timeouts_.SetTimeout(msec); } > > void AcoustidClient::Start(int id, const QString& fingerprint, > int duration_msec) { >@@ -60,12 +60,12 @@ void AcoustidClient::Start(int id, const QString& fingerprint, > url.setQuery(url_query); > QNetworkRequest req(url); > >- QNetworkReply* reply = network_->get(req); >+ QNetworkReply* reply = network_.get(req); > NewClosure(reply, SIGNAL(finished()), this, > SLOT(RequestFinished(QNetworkReply*, int)), reply, id); > requests_[id] = reply; > >- timeouts_->AddReply(reply); >+ timeouts_.AddReply(reply); > } > > void AcoustidClient::Cancel(int id) { delete requests_.take(id); } >diff --git a/src/musicbrainz/acoustidclient.h b/src/musicbrainz/acoustidclient.h >index 1e68431..71f9b89 100644 >--- a/src/musicbrainz/acoustidclient.h >+++ b/src/musicbrainz/acoustidclient.h >@@ -21,9 +21,8 @@ > #include <QMap> > #include <QObject> > >-class NetworkTimeouts; >+#include "core/network.h" > >-class QNetworkAccessManager; > class QNetworkReply; > > class AcoustidClient : public QObject { >@@ -66,8 +65,8 @@ signals: > static const char* kUrl; > static const int kDefaultTimeout; > >- QNetworkAccessManager* network_; >- NetworkTimeouts* timeouts_; >+ NetworkAccessManager network_; >+ NetworkTimeouts timeouts_; > QMap<int, QNetworkReply*> requests_; > }; > >diff --git a/src/musicbrainz/musicbrainzclient.cpp b/src/musicbrainz/musicbrainzclient.cpp >index f2dd768..6bdb9df 100644 >--- a/src/musicbrainz/musicbrainzclient.cpp >+++ b/src/musicbrainz/musicbrainzclient.cpp >@@ -42,7 +42,16 @@ MusicBrainzClient::MusicBrainzClient(QObject* parent, > QNetworkAccessManager* network) > : QObject(parent), > network_(network ? network : new NetworkAccessManager(this)), >- timeouts_(new NetworkTimeouts(kDefaultTimeout, this)) {} >+ timeouts_(kDefaultTimeout, this) { >+ // TODO: replace by shared_ptr >+ deleteNetwork = !network; >+} >+ >+MusicBrainzClient::~MusicBrainzClient() >+{ >+ if (deleteNetwork) >+ delete network_; >+} > > void MusicBrainzClient::Start(int id, const QStringList& mbid_list) { > typedef QPair<QString, QString> Param; >@@ -64,7 +73,7 @@ void MusicBrainzClient::Start(int id, const QStringList& mbid_list) { > request_number++); > requests_.insert(id, reply); > >- timeouts_->AddReply(reply); >+ timeouts_.AddReply(reply); > > if (request_number >= kMaxRequestPerTrack) { > break; >@@ -89,7 +98,7 @@ void MusicBrainzClient::StartDiscIdRequest(const QString& discid) { > SLOT(DiscIdRequestFinished(const QString&, QNetworkReply*)), > discid, reply); > >- timeouts_->AddReply(reply); >+ timeouts_.AddReply(reply); > } > > void MusicBrainzClient::Cancel(int id) { delete requests_.take(id); } >diff --git a/src/musicbrainz/musicbrainzclient.h b/src/musicbrainz/musicbrainzclient.h >index 6627d8a..ea5ccaa 100644 >--- a/src/musicbrainz/musicbrainzclient.h >+++ b/src/musicbrainz/musicbrainzclient.h >@@ -23,7 +23,7 @@ > #include <QObject> > #include <QXmlStreamReader> > >-class NetworkTimeouts; >+#include "core/network.h" > > class QNetworkAccessManager; > class QNetworkReply; >@@ -43,6 +43,7 @@ class MusicBrainzClient : public QObject { > // is not transferred. > MusicBrainzClient(QObject* parent = nullptr, > QNetworkAccessManager* network = nullptr); >+ ~MusicBrainzClient(); > > struct Result { > Result() : duration_msec_(0), track_(0), year_(-1) {} >@@ -184,8 +185,9 @@ signals: > static const int kDefaultTimeout; > static const int kMaxRequestPerTrack; > >+ bool deleteNetwork; > QNetworkAccessManager* network_; >- NetworkTimeouts* timeouts_; >+ NetworkTimeouts timeouts_; > QMultiMap<int, QNetworkReply*> requests_; > // Results we received so far, kept here until all the replies are finished > QMap<int, QList<PendingResults>> pending_results_; >diff --git a/src/songinfo/ultimatelyricsprovider.cpp b/src/songinfo/ultimatelyricsprovider.cpp >index 443f372..185f259 100644 >--- a/src/songinfo/ultimatelyricsprovider.cpp >+++ b/src/songinfo/ultimatelyricsprovider.cpp >@@ -29,7 +29,7 @@ > const int UltimateLyricsProvider::kRedirectLimit = 5; > > UltimateLyricsProvider::UltimateLyricsProvider() >- : network_(new NetworkAccessManager(this)), >+ : network_(this), > relevance_(0), > redirect_count_(0), > url_hop_(false) {} >@@ -54,7 +54,7 @@ void UltimateLyricsProvider::FetchInfo(int id, const Song& metadata) { > // Fetch the URL, follow redirects > metadata_ = metadata; > redirect_count_ = 0; >- QNetworkReply* reply = network_->get(QNetworkRequest(url)); >+ QNetworkReply* reply = network_.get(QNetworkRequest(url)); > requests_[reply] = id; > connect(reply, SIGNAL(finished()), SLOT(LyricsFetched())); > } >@@ -93,7 +93,7 @@ void UltimateLyricsProvider::LyricsFetched() { > } > > redirect_count_++; >- QNetworkReply* reply = network_->get(QNetworkRequest(target)); >+ QNetworkReply* reply = network_.get(QNetworkRequest(target)); > requests_[reply] = id; > connect(reply, SIGNAL(finished()), SLOT(LyricsFetched())); > return; >@@ -128,7 +128,7 @@ void UltimateLyricsProvider::LyricsFetched() { > url_hop_ = true; > QUrl url(content); > qLog(Debug) << "Next url hop: " << url; >- QNetworkReply* reply = network_->get(QNetworkRequest(url)); >+ QNetworkReply* reply = network_.get(QNetworkRequest(url)); > requests_[reply] = id; > connect(reply, SIGNAL(finished()), SLOT(LyricsFetched())); > return; >diff --git a/src/songinfo/ultimatelyricsprovider.h b/src/songinfo/ultimatelyricsprovider.h >index 96f2ef4..a59fd20 100644 >--- a/src/songinfo/ultimatelyricsprovider.h >+++ b/src/songinfo/ultimatelyricsprovider.h >@@ -23,8 +23,7 @@ > #include <QStringList> > > #include "songinfoprovider.h" >- >-class NetworkAccessManager; >+#include "core/network.h" > > class QNetworkReply; > >@@ -85,7 +84,7 @@ class UltimateLyricsProvider : public SongInfoProvider { > void ReplaceFields(const Song& metadata, QString* text) const; > > private: >- NetworkAccessManager* network_; >+ NetworkAccessManager network_; > QMap<QNetworkReply*, int> requests_; > > QString name_; >diff --git a/src/ui/coverfromurldialog.cpp b/src/ui/coverfromurldialog.cpp >index 8813a0e..ce63540 100644 >--- a/src/ui/coverfromurldialog.cpp >+++ b/src/ui/coverfromurldialog.cpp >@@ -30,7 +30,7 @@ > CoverFromURLDialog::CoverFromURLDialog(QWidget* parent) > : QDialog(parent), > ui_(new Ui_CoverFromURLDialog), >- network_(new NetworkAccessManager(this)) { >+ network_(this) { > ui_->setupUi(this); > ui_->busy->hide(); > } >@@ -56,7 +56,7 @@ void CoverFromURLDialog::accept() { > QNetworkRequest network_request = > QNetworkRequest(QUrl::fromUserInput(ui_->url->text())); > >- QNetworkReply* reply = network_->get(network_request); >+ QNetworkReply* reply = network_.get(network_request); > connect(reply, SIGNAL(finished()), SLOT(LoadCoverFromURLFinished())); > } > >diff --git a/src/ui/coverfromurldialog.h b/src/ui/coverfromurldialog.h >index 4087dc3..8608f62 100644 >--- a/src/ui/coverfromurldialog.h >+++ b/src/ui/coverfromurldialog.h >@@ -21,7 +21,8 @@ > #include <QDialog> > #include <QImage> > >-class NetworkAccessManager; >+#include "core/network.h" >+ > class Song; > class Ui_CoverFromURLDialog; > >@@ -44,7 +45,7 @@ class CoverFromURLDialog : public QDialog { > private: > Ui_CoverFromURLDialog* ui_; > >- NetworkAccessManager* network_; >+ NetworkAccessManager network_; > QImage last_image_; > }; > >-- >2.21.0 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
Actions:
View
|
Diff
Attachments on
bug 1141444
:
810426
|
810435
|
810464
|
810465
|
810466
|
810549
| 811247 |
811251