pdf preview generation: Use QtConcurrent::mapped + QFutureWatcher instead of own single-thread solution
This commit is contained in:
@ -6,29 +6,17 @@
|
||||
#include <QThread>
|
||||
#include <QMutex>
|
||||
#include <QWaitCondition>
|
||||
#include <QMutex>
|
||||
#include <QFuture>
|
||||
#include <poppler-qt5.h>
|
||||
#include "pdfpreview.h"
|
||||
#include "searchresult.h"
|
||||
|
||||
class PdfWorker : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private:
|
||||
QHash<QString, Poppler::Document *> documentcache;
|
||||
Poppler::Document *document(QString path);
|
||||
std::atomic<bool> cancelCurrent{false};
|
||||
std::atomic<bool> generating{false};
|
||||
QMutex isFreeMutex;
|
||||
QWaitCondition isFree;
|
||||
|
||||
public:
|
||||
PdfWorker();
|
||||
void cancelAndWait();
|
||||
public slots:
|
||||
void generatePreviews(QVector<SearchResult> paths, double scalefactor);
|
||||
signals:
|
||||
void previewReady(PdfPreview p);
|
||||
void previewsFinished();
|
||||
QFuture<PdfPreview> generatePreviews(QVector<SearchResult> paths, double scalefactor);
|
||||
};
|
||||
|
||||
#endif // PDFWORKER_H
|
||||
|
Verwijs in nieuw issue
Block a user