From 395f717acebe85e6b606a3ebc0e1c38d29bcf59b Mon Sep 17 00:00:00 2001 From: upstream svn Date: Sun, 18 Sep 2011 12:23:47 +0000 Subject: [PATCH] amulegui: great performance boost when an insane number of files is shared I shared 15000 files, and amulegui was stuck at 100% CPU and not responding to input. Now startup is still very bumpy, but after a few minutes things smooth out nicely. --- .svn-revision | 2 +- src/ECSpecialCoreTags.cpp | 4 ++-- src/amule-remote-gui.cpp | 7 +++++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/.svn-revision b/.svn-revision index 6daedd7f..744bb8d8 100644 --- a/.svn-revision +++ b/.svn-revision @@ -1 +1 @@ -10612 +10613 diff --git a/src/ECSpecialCoreTags.cpp b/src/ECSpecialCoreTags.cpp index e52027c7..62982fc4 100644 --- a/src/ECSpecialCoreTags.cpp +++ b/src/ECSpecialCoreTags.cpp @@ -251,8 +251,8 @@ CEC_SharedFile_Tag::CEC_SharedFile_Tag(const CKnownFile *file, EC_DETAIL_LEVEL d AddTag(EC_TAG_PARTFILE_ED2K_LINK, theApp->CreateED2kLink(file, (theApp->IsConnectedED2K() && !theApp->serverconnect->IsLowID())), valuemap); - AddTag(EC_TAG_KNOWNFILE_COMMENT, file->GetFileComment()); - AddTag(EC_TAG_KNOWNFILE_RATING, file->GetFileRating()); + AddTag(EC_TAG_KNOWNFILE_COMMENT, file->GetFileComment(), valuemap); + AddTag(EC_TAG_KNOWNFILE_RATING, file->GetFileRating(), valuemap); } CEC_UpDownClient_Tag::CEC_UpDownClient_Tag(const CUpDownClient* client, EC_DETAIL_LEVEL detail_level, CValueMap *valuemap) : diff --git a/src/amule-remote-gui.cpp b/src/amule-remote-gui.cpp index 0ec14abc..bf5f2cfd 100644 --- a/src/amule-remote-gui.cpp +++ b/src/amule-remote-gui.cpp @@ -1091,9 +1091,12 @@ void CKnownFilesRem::ProcessUpdate(const CECTag *reply, CECPacket *, int) CEC_SharedFile_Tag *tag = (CEC_SharedFile_Tag *) curTag; uint32 id = tag->ID(); core_files.insert(id); - if ( m_items_hash.count(id) ) { + std::map::iterator it2 = m_items_hash.find(id); + if (it2 != m_items_hash.end() ) { // Item already known: update it - ProcessItemUpdate(tag, m_items_hash[id]); + if (tag->HasChildTags()) { + ProcessItemUpdate(tag, it2->second); + } } else { CKnownFile * newFile; if (tag->GetTagName() == EC_TAG_PARTFILE) { -- 2.11.4.GIT