diff --git a/rtgui/profilestore.cc b/rtgui/profilestore.cc index 364ae5c6c..d7bf18ab5 100644 --- a/rtgui/profilestore.cc +++ b/rtgui/profilestore.cc @@ -20,13 +20,14 @@ #include "options.h" #include "toolpanel.h" #include "guiutils.h" +#include "dynamicprofile.h" ProfileStore profileStore; using namespace rtengine; using namespace rtengine::procparams; -ProfileStore::ProfileStore () : parseMutex(nullptr), storeState(STORESTATE_NOTINITIALIZED), internalDefaultProfile(nullptr), internalDefaultEntry(nullptr), internalDynamicEntry(nullptr) +ProfileStore::ProfileStore () : parseMutex(nullptr), storeState(STORESTATE_NOTINITIALIZED), internalDefaultProfile(nullptr), internalDefaultEntry(nullptr), internalDynamicEntry(nullptr), dynamicRules(new std::vector()) { internalDefaultProfile = new AutoPartialProfile(); internalDefaultProfile->set(true); @@ -42,7 +43,7 @@ bool ProfileStore::init () storeState = STORESTATE_BEINGINITIALIZED; parseMutex = new MyMutex(); _parseProfiles (); - loadDynamicProfileRules(dynamicRules); + loadDynamicProfileRules(*dynamicRules); storeState = STORESTATE_INITIALIZED; } @@ -506,6 +507,20 @@ void ProfileStore::dumpFolderList() printf("\n"); } + +const std::vector &ProfileStore::getDynamicProfileRules() const +{ + return *dynamicRules; +} + + +void ProfileStore::setDynamicProfileRules(const std::vector &r) +{ + *dynamicRules = r; +} + + + ProfileStoreEntry::ProfileStoreEntry() : label(""), type(PSET_FOLDER), parentFolderId(0), folderId(0) {} ProfileStoreEntry::ProfileStoreEntry(Glib::ustring label, PSEType type, unsigned short parentFolder, unsigned short folder) : label(label), type(type), parentFolderId(parentFolder), folderId(folder) {} diff --git a/rtgui/profilestore.h b/rtgui/profilestore.h index f97cd02e1..ad569c180 100644 --- a/rtgui/profilestore.h +++ b/rtgui/profilestore.h @@ -29,9 +29,11 @@ #include "threadutils.h" #include "paramsedited.h" #include "guiutils.h" -#include "dynamicprofile.h" +// forward decl +class DynamicProfileRule; + /** @brief This will implement callback functions for the ProfileStore * */ @@ -163,7 +165,7 @@ private: std::list listeners; /** cache for dynamic profile rules */ - std::vector dynamicRules; + std::unique_ptr> dynamicRules; /** @brief Method to recursively parse a profile folder with a level depth arbitrarily limited to 3 * @@ -208,15 +210,8 @@ public: return internalDynamicEntry; } - const std::vector &getDynamicProfileRules() const - { - return dynamicRules; - } - - void setDynamicProfileRules(const std::vector &r) - { - dynamicRules = r; - } + const std::vector &getDynamicProfileRules() const; + void setDynamicProfileRules(const std::vector &r); void addListener(ProfileStoreListener *listener); void removeListener(ProfileStoreListener *listener); diff --git a/rtgui/thumbnail.cc b/rtgui/thumbnail.cc index b9fb5ed2e..62f543d4a 100644 --- a/rtgui/thumbnail.cc +++ b/rtgui/thumbnail.cc @@ -217,14 +217,12 @@ rtengine::procparams::ProcParams* Thumbnail::createProcParamsForUpdate(bool retu const CacheImageData* cfs = getCacheImageData(); Glib::ustring defaultPparamsPath = options.findProfilePath(defProf); - bool create = (!hasProcParams() || forceCPB); + const bool create = (!hasProcParams() || forceCPB); - Glib::ustring outFName; - if (options.paramsLoadLocation == PLL_Input) { - outFName = fname + paramFileExtension; - } else { - outFName = getCacheFileName("profiles", paramFileExtension); - } + const Glib::ustring outFName = + (options.paramsLoadLocation == PLL_Input) ? + fname + paramFileExtension : + getCacheFileName("profiles", paramFileExtension); if (defProf == DEFPROFILE_DYNAMIC && create && cfs && cfs->exifValid) { rtengine::ImageMetaData* imageMetaData;