From 31a2d904ecba8f25b691986e2336af7d5cf468a8 Mon Sep 17 00:00:00 2001 From: WrinklyNinja Date: Tue, 17 Sep 2013 12:54:47 +0100 Subject: [PATCH] Userlist is now only written to during sorting if something was changed. --- src/gui/main.cpp | 77 +++++++++++++++++++++++++----------------------- 1 file changed, 40 insertions(+), 37 deletions(-) diff --git a/src/gui/main.cpp b/src/gui/main.cpp index 9a67aff9..3855b135 100644 --- a/src/gui/main.cpp +++ b/src/gui/main.cpp @@ -671,54 +671,57 @@ void Launcher::OnSortPlugins(wxCommandEvent& event) { } plugins = newPluginsList; - BOOST_LOG_TRIVIAL(trace) << "Merging down edits to the userlist."; - for (list::const_iterator it=editedPlugins.begin(),endit=editedPlugins.end(); it != endit; ++it) { - list::iterator jt = find(ulist_plugins.begin(), ulist_plugins.end(), *it); + if (!editedPlugins.empty()) { - if (jt != ulist_plugins.end()) { - jt->Merge(*it); - } else { - ulist_plugins.push_back(*it); + BOOST_LOG_TRIVIAL(trace) << "Merging down edits to the userlist."; + for (list::const_iterator it=editedPlugins.begin(),endit=editedPlugins.end(); it != endit; ++it) { + list::iterator jt = find(ulist_plugins.begin(), ulist_plugins.end(), *it); + + if (jt != ulist_plugins.end()) { + jt->Merge(*it); + } else { + ulist_plugins.push_back(*it); + } } - } - BOOST_LOG_TRIVIAL(trace) << "Checking that any pre-existing 'load after' entries in the userlist are still valid."; - for (list::iterator it=ulist_plugins.begin(),endit=ulist_plugins.end(); it != endit; ++it) { - //Double-check that the plugin is still loading after any other plugins already in its "load after" metadata. - list::iterator mainPos = find(plugins.begin(), plugins.end(), *it); + BOOST_LOG_TRIVIAL(trace) << "Checking that any pre-existing 'load after' entries in the userlist are still valid."; + for (list::iterator it=ulist_plugins.begin(),endit=ulist_plugins.end(); it != endit; ++it) { + //Double-check that the plugin is still loading after any other plugins already in its "load after" metadata. + list::iterator mainPos = find(plugins.begin(), plugins.end(), *it); - if (mainPos == plugins.end()) - continue; + if (mainPos == plugins.end()) + continue; - size_t mainDist = distance(plugins.begin(), mainPos); + size_t mainDist = distance(plugins.begin(), mainPos); - set loadAfter = it->LoadAfter(); - set::iterator jt = loadAfter.begin(); - while (jt != loadAfter.end()) { - list::iterator filePos = find(plugins.begin(), plugins.end(), *jt); + set loadAfter = it->LoadAfter(); + set::iterator jt = loadAfter.begin(); + while (jt != loadAfter.end()) { + list::iterator filePos = find(plugins.begin(), plugins.end(), *jt); - size_t fileDist = distance(plugins.begin(), filePos); + size_t fileDist = distance(plugins.begin(), filePos); - if (fileDist > mainDist) - loadAfter.erase(jt++); - else - ++jt; + if (fileDist > mainDist) + loadAfter.erase(jt++); + else + ++jt; + } + it->LoadAfter(loadAfter); } - it->LoadAfter(loadAfter); + + //Save edits to userlist. + BOOST_LOG_TRIVIAL(debug) << "Saving edited userlist."; + YAML::Emitter yout; + yout.SetIndent(2); + yout << YAML::BeginMap + << YAML::Key << "plugins" << YAML::Value << ulist_plugins + << YAML::EndMap; + + boss::ofstream uout(_game.UserlistPath()); + uout << yout.c_str(); + uout.close(); } - //Save edits to userlist. - BOOST_LOG_TRIVIAL(debug) << "Saving edited userlist."; - YAML::Emitter yout; - yout.SetIndent(2); - yout << YAML::BeginMap - << YAML::Key << "plugins" << YAML::Value << ulist_plugins - << YAML::EndMap; - - boss::ofstream uout(_game.UserlistPath()); - uout << yout.c_str(); - uout.close(); - //Now set load order. BOOST_LOG_TRIVIAL(trace) << "Setting load order."; try {