diff --git a/rtengine/rtlensfun.cc b/rtengine/rtlensfun.cc index 6ad475beb..7b959ce8b 100644 --- a/rtengine/rtlensfun.cc +++ b/rtengine/rtlensfun.cc @@ -24,6 +24,7 @@ #include "procparams.h" #include "rtlensfun.h" #include "settings.h" + namespace rtengine { @@ -499,7 +500,7 @@ std::unique_ptr LFDatabase::getModifier(const LFCamera &camera, cons return ret; } -Glib::ustring LFDatabase::lastKey; +std::set LFDatabase::notFound; std::unique_ptr LFDatabase::findModifier(const procparams::LensProfParams &lensProf, const FramesMetaData *idata, int width, int height, const procparams::CoarseTransformParams &coarse, int rawRotationDeg) { @@ -521,9 +522,9 @@ std::unique_ptr LFDatabase::findModifier(const procparams::LensProfP return nullptr; } - Glib::ustring temp = make + model + lens; - if (lastKey == temp) { - // This combination was not found in last search => do not search again + const std::string key = (make + model + lens).collate_key(); + if (notFound.find(key) != notFound.end()) { + // This combination was not found => do not search again return nullptr; } const LFDatabase *db = getInstance(); @@ -555,7 +556,7 @@ std::unique_ptr LFDatabase::findModifier(const procparams::LensProfP } if (!ret) { - lastKey = temp; + notFound.emplace(key); } return ret; diff --git a/rtengine/rtlensfun.h b/rtengine/rtlensfun.h index 302045695..573b93fca 100644 --- a/rtengine/rtlensfun.h +++ b/rtengine/rtlensfun.h @@ -21,6 +21,7 @@ #pragma once #include +#include #include #include @@ -135,7 +136,7 @@ private: mutable MyMutex lfDBMutex; static LFDatabase instance_; lfDatabase *data_; - static Glib::ustring lastKey; + static std::set notFound; }; } // namespace rtengine