mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 23:40:11 +02:00
Merge pull request #14068 from hyperlogic/bug-fix/bad-avatar-pointer-static-cast
Fix for bad static_pointer_cast on exit.
This commit is contained in:
commit
898ba20f1c
1 changed files with 7 additions and 5 deletions
|
@ -505,14 +505,16 @@ void AvatarManager::clearOtherAvatars() {
|
||||||
|
|
||||||
void AvatarManager::deleteAllAvatars() {
|
void AvatarManager::deleteAllAvatars() {
|
||||||
assert(_avatarsToChangeInPhysics.empty());
|
assert(_avatarsToChangeInPhysics.empty());
|
||||||
|
QReadLocker locker(&_hashLock);
|
||||||
QWriteLocker locker(&_hashLock);
|
AvatarHash::iterator avatarIterator = _avatarHash.begin();
|
||||||
AvatarHash::iterator avatarIterator = _avatarHash.begin();
|
|
||||||
while (avatarIterator != _avatarHash.end()) {
|
while (avatarIterator != _avatarHash.end()) {
|
||||||
auto avatar = std::static_pointer_cast<OtherAvatar>(avatarIterator.value());
|
auto avatar = std::static_pointer_cast<Avatar>(avatarIterator.value());
|
||||||
avatarIterator = _avatarHash.erase(avatarIterator);
|
avatarIterator = _avatarHash.erase(avatarIterator);
|
||||||
avatar->die();
|
avatar->die();
|
||||||
assert(!avatar->_motionState);
|
if (avatar != _myAvatar) {
|
||||||
|
auto otherAvatar = std::static_pointer_cast<OtherAvatar>(avatar);
|
||||||
|
assert(!otherAvatar->_motionState);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue