Merge pull request #65 from jacobfk20/MetadataSaveOptimization

Fix for long exit times while saving metadata
This commit is contained in:
Jools Wills 2016-09-03 22:56:25 +01:00 committed by GitHub
commit 77ad01c12c
3 changed files with 17 additions and 0 deletions

View file

@ -215,6 +215,12 @@ void updateGamelist(SystemData* system)
{
const char* tag = ((*fit)->getType() == GAME) ? "game" : "folder";
// check if current file has metadata, if no, skip it as it wont be in the gamelist anyway.
if ((*fit)->metadata.isDefault()) {
++fit;
continue;
}
// check if the file already exists in the XML
// if it does, remove it before adding
for(pugi::xml_node fileNode = root.child(tag); fileNode; fileNode = fileNode.next_sibling(tag))

View file

@ -133,3 +133,12 @@ boost::posix_time::ptime MetaDataList::getTime(const std::string& key) const
{
return string_to_ptime(get(key), "%Y%m%dT%H%M%S%F%q");
}
bool MetaDataList::isDefault()
{
for (int i = 1; i < mMap.size(); i++) {
if (mMap.at(gameDecls[i].key) != gameDecls[i].defaultValue) return false;
}
return true;
}

View file

@ -56,6 +56,8 @@ public:
float getFloat(const std::string& key) const;
boost::posix_time::ptime getTime(const std::string& key) const;
bool isDefault();
inline MetaDataListType getType() const { return mType; }
inline const std::vector<MetaDataDecl>& getMDD() const { return getMDDByType(getType()); }