Refresh cached image data if sidecar is changed
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user