Saving a profile only took effect after RT restart (#3869)

This commit is contained in:
Hombre
2017-05-11 20:41:55 +02:00
committed by Morgan Hardwood
parent 76f73346bf
commit 1354ea6f9d
2 changed files with 20 additions and 7 deletions

View File

@@ -46,7 +46,7 @@ bool ProfileStore::init (bool loadAll)
this->loadAll = loadAll;
if (storeState == STORESTATE_NOTINITIALIZED && loadAll) {
if ((storeState == STORESTATE_NOTINITIALIZED || storeState == STORESTATE_DIRTY) && loadAll) {
storeState = STORESTATE_BEINGINITIALIZED;
_parseProfiles ();
storeState = STORESTATE_INITIALIZED;
@@ -85,7 +85,7 @@ ProfileStore::~ProfileStore ()
* This method will scan the directory tree again and update the profile list. When finished,
* the listeners will be called in order to update with the new list
*/
void ProfileStore::parseProfiles ()
void ProfileStore::parseProfilesOnce ()
{
for (auto listener : listeners) {
@@ -100,6 +100,13 @@ void ProfileStore::parseProfiles ()
}
}
void ProfileStore::parseProfiles ()
{
storeState = STORESTATE_DIRTY;
parseProfilesOnce ();
}
void ProfileStore::_parseProfiles ()
{
// clear loaded profiles
@@ -272,7 +279,7 @@ const ProfileStoreEntry* ProfileStore::findEntryFromFullPathU (Glib::ustring pat
}
if (storeState == STORESTATE_NOTINITIALIZED) {
parseProfiles();
parseProfilesOnce();
}
if (path == DEFPROFILE_INTERNAL || path == DEFPROFILE_DYNAMIC) {
@@ -340,7 +347,7 @@ const PartialProfile* ProfileStore::getProfile (Glib::ustring path)
{
if (storeState == STORESTATE_NOTINITIALIZED) {
parseProfiles();
parseProfilesOnce();
}
const ProfileStoreEntry *pse = findEntryFromFullPath (path);
@@ -356,7 +363,7 @@ const PartialProfile* ProfileStore::getProfile (const ProfileStoreEntry* entry)
{
if (storeState == STORESTATE_NOTINITIALIZED) {
parseProfiles();
parseProfilesOnce();
}
MyMutex::MyLock lock (parseMutex);
@@ -387,7 +394,7 @@ const std::vector<const ProfileStoreEntry*>* ProfileStore::getFileList ()
{
if (storeState == STORESTATE_NOTINITIALIZED) {
parseProfiles();
parseProfilesOnce();
}
parseMutex.lock();
@@ -493,7 +500,7 @@ void ProfileStore::dumpFolderList()
PartialProfile *ProfileStore::loadDynamicProfile (const ImageMetaData *im)
{
if (storeState == STORESTATE_NOTINITIALIZED) {
parseProfiles();
parseProfilesOnce();
}
PartialProfile *ret = new PartialProfile (true, true);

View File

@@ -106,6 +106,7 @@ class ProfileStore : public rtengine::NonCopyable, public DynamicProfileRules
STORESTATE_LIGHTWEIGHT,
STORESTATE_BEINGINITIALIZED,
STORESTATE_INITIALIZED,
STORESTATE_DIRTY,
STORESTATE_DELETED
} StoreState;
@@ -153,6 +154,11 @@ private:
* if false, only one root directory is expected
*/
bool parseDir (Glib::ustring& realPath, Glib::ustring& virtualPath, Glib::ustring& currDir, unsigned int parentId, unsigned char level, bool displayLevel0);
/** @brief Will parse the profiles's dir only once. Subsequent call to this function will be ignored unless the profile list has been cleared
*/
void parseProfilesOnce ();
/** @brief Will scan the directory to fill the profile list
*/
void _parseProfiles ();
void clearFileList ();
void clearProfileList ();