remove max previewimage memory usage
This commit is contained in:
parent
fa8e351859
commit
a979eb1f51
@ -18,27 +18,14 @@ struct Renderer
|
||||
double scaleX;
|
||||
double scaleY;
|
||||
QHash<QString, Poppler::Document *> documentcache;
|
||||
qsizetype maxTotalPreviewImageMemUsage;
|
||||
std::atomic<qsizetype> currentTotalPreviewImageMemUsage{0};
|
||||
QVector<QString> wordsToHighlight;
|
||||
Renderer(double scaleX, double scaleY, qsizetype maxPreviewImageMemUsage, QVector<QString> wordsToHighlight)
|
||||
Renderer(double scaleX, double scaleY, QVector<QString> wordsToHighlight)
|
||||
{
|
||||
this->scaleX = scaleX;
|
||||
this->scaleY = scaleY;
|
||||
this->maxTotalPreviewImageMemUsage = maxPreviewImageMemUsage;
|
||||
this->wordsToHighlight = wordsToHighlight;
|
||||
}
|
||||
|
||||
/*we need this one because std::atomic has none, but this is only a functor for
|
||||
concurrentmap, thus, it's ok for it to be half-broken*/
|
||||
Renderer(const Renderer &o)
|
||||
{
|
||||
this->scaleX = o.scaleX;
|
||||
this->scaleY = o.scaleY;
|
||||
this->maxTotalPreviewImageMemUsage = o.maxTotalPreviewImageMemUsage;
|
||||
this->wordsToHighlight = o.wordsToHighlight;
|
||||
}
|
||||
|
||||
~Renderer()
|
||||
{
|
||||
qDeleteAll(documentcache);
|
||||
@ -47,8 +34,9 @@ struct Renderer
|
||||
Poppler::Document *document(QString path)
|
||||
{
|
||||
if(documentcache.contains(path))
|
||||
{
|
||||
return documentcache.value(path);
|
||||
|
||||
}
|
||||
Poppler::Document *result = Poppler::Document::load(path);
|
||||
if(result == nullptr)
|
||||
{
|
||||
@ -64,8 +52,6 @@ struct Renderer
|
||||
PdfPreview operator()(const PdfPreview &preview)
|
||||
{
|
||||
PdfPreview result = preview;
|
||||
if(currentTotalPreviewImageMemUsage.load() < maxTotalPreviewImageMemUsage)
|
||||
{
|
||||
Poppler::Document *doc = document(preview.documentPath);
|
||||
if(doc == nullptr)
|
||||
{
|
||||
@ -93,8 +79,6 @@ struct Renderer
|
||||
}
|
||||
}
|
||||
result.previewImage = img;
|
||||
currentTotalPreviewImageMemUsage += img.sizeInBytes();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
};
|
||||
@ -119,6 +103,5 @@ QFuture<PdfPreview> PdfWorker::generatePreviews(const QVector<SearchResult> path
|
||||
double scaleY = QGuiApplication::primaryScreen()->physicalDotsPerInchY() * scalefactor;
|
||||
|
||||
QSettings setting;
|
||||
qsizetype maxPreviewImageMemUsage = setting.value("maxpreviewimagesmemory", 1024 * 1024 * 1024).toLongLong();
|
||||
return QtConcurrent::mapped(previews, Renderer(scaleX, scaleY, maxPreviewImageMemUsage, wordsToHighlight));
|
||||
return QtConcurrent::mapped(previews, Renderer(scaleX, scaleY, wordsToHighlight));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user