Fix exit
This commit is contained in:
@@ -23,12 +23,12 @@
|
||||
|
||||
#include <QtGlobal>
|
||||
#include <QObject>
|
||||
#include <QDir>
|
||||
#include <QQueue>
|
||||
#include <QMutex>
|
||||
#include <QStandardPaths>
|
||||
#include <QSize>
|
||||
#include <QDir>
|
||||
#include <QThread>
|
||||
#include <QMutex>
|
||||
#include <QList>
|
||||
#include <QQueue>
|
||||
#include <QSet>
|
||||
#include <QVariant>
|
||||
#include <QString>
|
||||
@@ -37,6 +37,7 @@
|
||||
#include <QImage>
|
||||
#include <QPixmap>
|
||||
#include <QPainter>
|
||||
#include <QSize>
|
||||
#include <QNetworkAccessManager>
|
||||
#include <QNetworkReply>
|
||||
#include <QNetworkRequest>
|
||||
@@ -61,13 +62,30 @@ AlbumCoverLoader::AlbumCoverLoader(QObject *parent)
|
||||
cover_filename_(CollectionSettingsPage::SaveCover_Hash),
|
||||
cover_overwrite_(false),
|
||||
cover_lowercase_(true),
|
||||
cover_replace_spaces_(true)
|
||||
cover_replace_spaces_(true),
|
||||
original_thread_(nullptr)
|
||||
{
|
||||
|
||||
original_thread_ = thread();
|
||||
ReloadSettings();
|
||||
|
||||
}
|
||||
|
||||
void AlbumCoverLoader::ExitAsync() {
|
||||
|
||||
stop_requested_ = true;
|
||||
metaObject()->invokeMethod(this, "Exit", Qt::QueuedConnection);
|
||||
|
||||
}
|
||||
|
||||
void AlbumCoverLoader::Exit() {
|
||||
|
||||
assert(QThread::currentThread() == thread());
|
||||
moveToThread(original_thread_);
|
||||
emit ExitFinished();
|
||||
|
||||
}
|
||||
|
||||
void AlbumCoverLoader::ReloadSettings() {
|
||||
|
||||
QSettings s;
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
#include "settings/collectionsettingspage.h"
|
||||
#include "albumcoverloaderoptions.h"
|
||||
|
||||
class QThread;
|
||||
class Song;
|
||||
class NetworkAccessManager;
|
||||
|
||||
@@ -52,6 +53,7 @@ class AlbumCoverLoader : public QObject {
|
||||
|
||||
void ReloadSettings();
|
||||
|
||||
void ExitAsync();
|
||||
void Stop() { stop_requested_ = true; }
|
||||
|
||||
static QString ImageCacheDir(const Song::Source source);
|
||||
@@ -68,11 +70,13 @@ class AlbumCoverLoader : public QObject {
|
||||
static QPixmap TryLoadPixmap(const QUrl &automatic, const QUrl &manual, const QUrl &url = QUrl());
|
||||
static QImage ScaleAndPad(const AlbumCoverLoaderOptions &options, const QImage &image);
|
||||
|
||||
signals:
|
||||
signals:
|
||||
void ExitFinished();
|
||||
void ImageLoaded(const quint64 id, const QUrl &cover_url, const QImage &image);
|
||||
void ImageLoaded(const quint64 id, const QUrl &cover_url, const QImage &scaled, const QImage &original);
|
||||
|
||||
protected slots:
|
||||
void Exit();
|
||||
void ProcessTasks();
|
||||
void RemoteFetchFinished(QNetworkReply *reply, const QUrl &cover_url);
|
||||
|
||||
@@ -128,6 +132,8 @@ signals:
|
||||
bool cover_lowercase_;
|
||||
bool cover_replace_spaces_;
|
||||
|
||||
QThread *original_thread_;
|
||||
|
||||
};
|
||||
|
||||
#endif // ALBUMCOVERLOADER_H
|
||||
|
||||
Reference in New Issue
Block a user