Use one instance of NetworkAccessManager

This commit is contained in:
Jonas Kvinge
2023-04-21 20:20:53 +02:00
parent bee6b7f946
commit 7fc5aef553
53 changed files with 270 additions and 311 deletions

View File

@@ -132,7 +132,7 @@ void AlbumCoverChoiceController::Init(Application *app) {
app_ = app;
cover_fetcher_ = new AlbumCoverFetcher(app_->cover_providers(), this);
cover_fetcher_ = new AlbumCoverFetcher(app_->cover_providers(), app->network(), this);
cover_searcher_ = new AlbumCoverSearcher(QIcon(":/pictures/cdcase.png"), app, this);
cover_searcher_->Init(cover_fetcher_);
@@ -322,7 +322,7 @@ QUrl AlbumCoverChoiceController::LoadCoverFromURL(Song *song) {
AlbumCoverImageResultPtr AlbumCoverChoiceController::LoadImageFromURL() {
if (!cover_from_url_dialog_) { cover_from_url_dialog_ = new CoverFromURLDialog(this); }
if (!cover_from_url_dialog_) { cover_from_url_dialog_ = new CoverFromURLDialog(app_->network(), this); }
return cover_from_url_dialog_->Exec();

View File

@@ -37,10 +37,10 @@ using namespace std::chrono_literals;
const int AlbumCoverFetcher::kMaxConcurrentRequests = 5;
AlbumCoverFetcher::AlbumCoverFetcher(CoverProviders *cover_providers, QObject *parent, NetworkAccessManager *network)
AlbumCoverFetcher::AlbumCoverFetcher(CoverProviders *cover_providers, NetworkAccessManager *network, QObject *parent)
: QObject(parent),
cover_providers_(cover_providers),
network_(network ? network : new NetworkAccessManager(this)),
network_(network),
next_id_(0),
request_starter_(new QTimer(this)) {

View File

@@ -107,7 +107,7 @@ class AlbumCoverFetcher : public QObject {
Q_OBJECT
public:
explicit AlbumCoverFetcher(CoverProviders *cover_providers, QObject *parent = nullptr, NetworkAccessManager *network = nullptr);
explicit AlbumCoverFetcher(CoverProviders *cover_providers, NetworkAccessManager *network, QObject *parent = nullptr);
~AlbumCoverFetcher() override;
static const int kMaxConcurrentRequests;

View File

@@ -53,12 +53,12 @@
#include "albumcoverloaderresult.h"
#include "albumcoverimageresult.h"
AlbumCoverLoader::AlbumCoverLoader(QObject *parent)
AlbumCoverLoader::AlbumCoverLoader(NetworkAccessManager *network, QObject *parent)
: QObject(parent),
network_(network),
stop_requested_(false),
load_image_async_id_(1),
save_image_async_id_(1),
network_(new NetworkAccessManager(this)),
original_thread_(nullptr) {
original_thread_ = thread();

View File

@@ -51,7 +51,7 @@ class AlbumCoverLoader : public QObject {
Q_OBJECT
public:
explicit AlbumCoverLoader(QObject *parent = nullptr);
explicit AlbumCoverLoader(NetworkAccessManager *network, QObject *parent = nullptr);
enum class State {
None,
@@ -135,6 +135,8 @@ class AlbumCoverLoader : public QObject {
void NextState(TaskPtr task);
TryLoadResult TryLoadImage(TaskPtr task);
NetworkAccessManager *network_;
bool stop_requested_;
QMutex mutex_load_image_async_;
@@ -144,8 +146,6 @@ class AlbumCoverLoader : public QObject {
quint64 load_image_async_id_;
quint64 save_image_async_id_;
NetworkAccessManager *network_;
static const int kMaxRedirects = 3;
QThread *original_thread_;

View File

@@ -106,7 +106,7 @@ AlbumCoverManager::AlbumCoverManager(Application *app, CollectionBackend *collec
filter_all_(nullptr),
filter_with_covers_(nullptr),
filter_without_covers_(nullptr),
cover_fetcher_(new AlbumCoverFetcher(app_->cover_providers(), this)),
cover_fetcher_(new AlbumCoverFetcher(app_->cover_providers(), app_->network(), this)),
cover_searcher_(nullptr),
cover_export_(nullptr),
cover_exporter_(new AlbumCoverExporter(this)),

View File

@@ -40,7 +40,10 @@
#include "coverfromurldialog.h"
#include "ui_coverfromurldialog.h"
CoverFromURLDialog::CoverFromURLDialog(QWidget *parent) : QDialog(parent), ui_(new Ui_CoverFromURLDialog), network_(new NetworkAccessManager(this)) {
CoverFromURLDialog::CoverFromURLDialog(NetworkAccessManager *network, QWidget *parent)
: QDialog(parent),
network_(network),
ui_(new Ui_CoverFromURLDialog) {
ui_->setupUi(this);
ui_->busy->hide();

View File

@@ -40,7 +40,7 @@ class CoverFromURLDialog : public QDialog {
Q_OBJECT
public:
explicit CoverFromURLDialog(QWidget *parent = nullptr);
explicit CoverFromURLDialog(NetworkAccessManager *network, QWidget *parent = nullptr);
~CoverFromURLDialog() override;
// Opens the dialog. This returns an image found at the URL chosen by user or null image if the dialog got rejected.
@@ -51,9 +51,8 @@ class CoverFromURLDialog : public QDialog {
void LoadCoverFromURLFinished();
private:
Ui_CoverFromURLDialog *ui_;
NetworkAccessManager *network_;
Ui_CoverFromURLDialog *ui_;
AlbumCoverImageResultPtr last_album_cover_;
};

View File

@@ -30,7 +30,6 @@
#include <QSettings>
#include "core/logging.h"
#include "core/networkaccessmanager.h"
#include "coverprovider.h"
#include "coverproviders.h"
@@ -38,7 +37,7 @@
int CoverProviders::NextOrderId = 0;
CoverProviders::CoverProviders(QObject *parent) : QObject(parent), network_(new NetworkAccessManager(this)) {}
CoverProviders::CoverProviders(QObject *parent) : QObject(parent) {}
CoverProviders::~CoverProviders() {

View File

@@ -32,7 +32,6 @@
#include <QString>
#include <QAtomicInt>
class NetworkAccessManager;
class CoverProvider;
// This is a repository for cover providers.
@@ -60,8 +59,6 @@ class CoverProviders : public QObject {
int NextId();
NetworkAccessManager *network() const { return network_; }
private slots:
void ProviderDestroyed();
@@ -70,8 +67,6 @@ class CoverProviders : public QObject {
static int NextOrderId;
NetworkAccessManager *network_;
QMap<CoverProvider*, QString> cover_providers_;
QMutex mutex_;