Refresh cached image data if sidecar is changed

This commit is contained in:
Lawrence Lee
2023-05-14 18:18:27 -07:00
parent 572a75f02a
commit c557b320c2
6 changed files with 55 additions and 5 deletions

View File

@@ -97,6 +97,10 @@ Thumbnail* CacheManager::getEntry (const Glib::ustring& fname)
}
const auto cacheName = getCacheFileName ("data", fname, ".txt", md5);
const auto xmpSidecarMd5 =
rtengine::settings->metadata_xmp_sync != rtengine::Settings::MetadataXmpSync::NONE
? getMD5(Thumbnail::xmpSidecarPath(fname))
: "";
// let's see if we have it in the cache
{
@@ -106,6 +110,11 @@ Thumbnail* CacheManager::getEntry (const Glib::ustring& fname)
if (error == 0 && imageData.supported) {
if (xmpSidecarMd5 != imageData.xmpSidecarMd5) {
updateImageInfo(fname, imageData, xmpSidecarMd5);
imageData.save(cacheName);
}
thumbnail.reset (new Thumbnail (this, fname, &imageData));
if (!thumbnail->isSupported ()) {
@@ -117,7 +126,7 @@ Thumbnail* CacheManager::getEntry (const Glib::ustring& fname)
// if not, create a new one
if (!thumbnail) {
thumbnail.reset (new Thumbnail (this, fname, md5));
thumbnail.reset (new Thumbnail (this, fname, md5, xmpSidecarMd5));
if (!thumbnail->isSupported ()) {
thumbnail.reset ();
@@ -413,3 +422,9 @@ void CacheManager::applyCacheSizeLimitation () const
}
}
void CacheManager::updateImageInfo(const Glib::ustring &fname, CacheImageData &imageData, const Glib::ustring &xmpSidecarMd5) const
{
Thumbnail::infoFromImage(fname, imageData);
imageData.xmpSidecarMd5 = xmpSidecarMd5;
}