diff --git a/rtengine/rtlensfun.cc b/rtengine/rtlensfun.cc index 665fbd199..6ad475beb 100644 --- a/rtengine/rtlensfun.cc +++ b/rtengine/rtlensfun.cc @@ -24,7 +24,6 @@ #include "procparams.h" #include "rtlensfun.h" #include "settings.h" - namespace rtengine { @@ -500,6 +499,7 @@ std::unique_ptr LFDatabase::getModifier(const LFCamera &camera, cons return ret; } +Glib::ustring LFDatabase::lastKey; std::unique_ptr LFDatabase::findModifier(const procparams::LensProfParams &lensProf, const FramesMetaData *idata, int width, int height, const procparams::CoarseTransformParams &coarse, int rawRotationDeg) { @@ -521,6 +521,11 @@ 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 + return nullptr; + } const LFDatabase *db = getInstance(); LFCamera c = db->findCamera(make, model); LFLens l = db->findLens(lensProf.lfAutoMatch() ? c : LFCamera(), lens); @@ -549,6 +554,10 @@ std::unique_ptr LFDatabase::findModifier(const procparams::LensProfP << (ret ? ret->getDisplayString() : "NONE") << std::endl; } + if (!ret) { + lastKey = temp; + } + return ret; } diff --git a/rtengine/rtlensfun.h b/rtengine/rtlensfun.h index 7dcd96007..302045695 100644 --- a/rtengine/rtlensfun.h +++ b/rtengine/rtlensfun.h @@ -135,6 +135,7 @@ private: mutable MyMutex lfDBMutex; static LFDatabase instance_; lfDatabase *data_; + static Glib::ustring lastKey; }; } // namespace rtengine