From 2075038de1d3a181eb964020c635099ebf52b4ed Mon Sep 17 00:00:00 2001 From: "Robert C. Helling" Date: Mon, 9 Nov 2015 16:48:12 +0100 Subject: Store Thumbnails with image hashes This drastically improves the time it takes to select a dive with several pictures at the expense of longer startup and bigger hash files. Signed-off-by: Robert C. Helling Signed-off-by: Dirk Hohndel --- qt-models/divepicturemodel.cpp | 10 ++++++---- subsurface-core/qthelper.cpp | 3 +++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/qt-models/divepicturemodel.cpp b/qt-models/divepicturemodel.cpp index 55f20cef9..602663ec1 100644 --- a/qt-models/divepicturemodel.cpp +++ b/qt-models/divepicturemodel.cpp @@ -6,19 +6,21 @@ #include +extern QHash thumbnailCache; + + SPixmap scaleImages(picturepointer picture) { - static QHash cache; SPixmap ret; ret.first = picture; - if (cache.contains(picture->filename) && !cache.value(picture->filename).isNull()) { - ret.second = cache.value(picture->filename); + if (thumbnailCache.contains(picture->filename) && !thumbnailCache.value(picture->filename).isNull()) { + ret.second = thumbnailCache.value(picture->filename); } else { int dim = defaultIconMetrics().sz_pic; QImage p = SHashedImage(picture); if(!p.isNull()) { p = p.scaled(dim, dim, Qt::KeepAspectRatio); - cache.insert(picture->filename, p); + thumbnailCache.insert(picture->filename, p); } ret.second = p; } diff --git a/subsurface-core/qthelper.cpp b/subsurface-core/qthelper.cpp index 40c507a7e..63248f6c4 100644 --- a/subsurface-core/qthelper.cpp +++ b/subsurface-core/qthelper.cpp @@ -1129,6 +1129,7 @@ extern "C" void reverseGeoLookup(degrees_t latitude, degrees_t longitude, uint32 QHash hashOf; QMutex hashOfMutex; QHash localFilenameOf; +QHash thumbnailCache; extern "C" char * hashstring(char * filename) { @@ -1152,6 +1153,7 @@ void read_hashes() QDataStream stream(&hashfile); stream >> localFilenameOf; stream >> hashOf; + stream >> thumbnailCache; hashfile.close(); } } @@ -1163,6 +1165,7 @@ void write_hashes() QDataStream stream(&hashfile); stream << localFilenameOf; stream << hashOf; + stream << thumbnailCache; hashfile.commit(); } else { qDebug() << "cannot open" << hashfile.fileName(); -- cgit v1.2.3-70-g09d2