remove max previewimage memory usage

This commit is contained in:
Albert S. 2019-08-26 09:35:39 +02:00
parent 582abc333f
commit 4aed15f7a4

View File

@ -19,38 +19,25 @@ 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);
}
Poppler::Document *document(QString path)
{
if(documentcache.contains(path))
{
return documentcache.value(path);
}
Poppler::Document *result = Poppler::Document::load(path);
if(result == nullptr)
{
@ -68,8 +55,6 @@ struct Renderer
PdfPreview operator()(const PdfPreview &preview)
{
PdfPreview result = preview;
if(currentTotalPreviewImageMemUsage.load() < maxTotalPreviewImageMemUsage)
{
Poppler::Document *doc = document(preview.documentPath);
if(doc == nullptr)
{
@ -97,8 +82,6 @@ struct Renderer
}
}
result.previewImage = img;
currentTotalPreviewImageMemUsage += img.sizeInBytes();
}
return result;
}
};
@ -126,7 +109,6 @@ 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));
}