Profile: add "synchronous" mode for picture plotting

The thumbnails were fetched in the background to achieve a
snappier UI. The problem with that is that on LaTeX etc.
export only placeholder thumbnails were shown.

Therefore, implement a synchronous mode. This only tries
to fetch cached thumbnails or calculate thumbnails for
images. Videos and remote files are not supported.

Fixes #1963

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2019-02-02 21:23:52 +01:00 committed by Robert C. Helling
parent 07b0df215f
commit 8a8063c1cd
6 changed files with 40 additions and 15 deletions

View file

@ -456,8 +456,23 @@ void Thumbnailer::imageDownloadFailed(QString filename)
workingOn.remove(filename);
}
QImage Thumbnailer::fetchThumbnail(const QString &filename)
QImage Thumbnailer::fetchThumbnail(const QString &filename, bool synchronous)
{
if (synchronous) {
// In synchronous mode, first try the thumbnail cache.
Thumbnail thumbnail = getThumbnailFromCache(filename);
if (!thumbnail.img.isNull())
return thumbnail.img;
// If that didn't work, try to thumbnail the image.
thumbnail = getHashedImage(filename, false);
if (thumbnail.type == MEDIATYPE_STILL_LOADING || thumbnail.img.isNull())
return failImage; // No support for delayed thumbnails (web).
int size = maxThumbnailSize();
return thumbnail.img.scaled(size, size, Qt::KeepAspectRatio);
}
QMutexLocker l(&lock);
// We are not currently fetching this thumbnail - add it to the list.