don't erase from the AvatarHashMap on the wrong thread

This commit is contained in:
Stephen Birarda 2014-10-22 17:35:28 -07:00
parent 7b0f1477a1
commit 8e67c5f534

View file

@ -58,27 +58,21 @@ bool AvatarHashMap::containsAvatarWithDisplayName(const QString& displayName) {
}
AvatarData* AvatarHashMap::avatarWithDisplayName(const QString& displayName) {
AvatarHash::iterator avatarIterator = _avatarHash.begin();
while (avatarIterator != _avatarHash.end()) {
AvatarSharedPointer sharedAvatar = avatarIterator.value();
if (avatarIterator.value()->getDisplayName() == displayName) {
foreach(const AvatarSharedPointer& sharedAvatar, _avatarHash) {
if (sharedAvatar->getDisplayName() == displayName) {
// this is a match
// check if this avatar should still be around
if (!shouldKillAvatar(sharedAvatar)) {
// we have a match, return true
// we have a match, return the AvatarData
return sharedAvatar.data();
} else {
// we should remove this avatar, do that now
erase(avatarIterator);
// we should remove this avatar, but we might not be on a thread that is allowed
// so we just return NULL to the caller
return NULL;
}
break;
} else {
++avatarIterator;
}
}
// return false, no match
return NULL;
}