diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp index fc604809dc..2206d67c2c 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp @@ -1020,6 +1020,11 @@ void Avatar::cacheJoints() const { } } +void Avatar::invalidateJointIndicesCache() const { + QWriteLocker writeLock(&_jointIndicesCacheLock); + _jointsCached = false; +} + int Avatar::getJointIndex(const QString& name) const { int result = getFauxJointIndex(name); if (result != -1) { @@ -1090,10 +1095,8 @@ void Avatar::setSkeletonModelURL(const QUrl& skeletonModelURL) { } void Avatar::setModelURLFinished(bool success) { - { - QWriteLocker writeLock(&_jointIndicesCacheLock); - _jointsCached = false; - } + invalidateJointIndicesCache(); + if (!success && _skeletonModelURL != AvatarData::defaultFullAvatarModelUrl()) { const int MAX_SKELETON_DOWNLOAD_ATTEMPTS = 4; // NOTE: we don't want to be as generous as ResourceCache is, we only want 4 attempts if (_skeletonModel->getResourceDownloadAttemptsRemaining() <= 0 || diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h index f19feab9c6..2069e36998 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h @@ -269,6 +269,7 @@ protected: SkeletonModelPointer _skeletonModel; void cacheJoints() const; + void invalidateJointIndicesCache() const; mutable QHash _jointIndicesCache; mutable QReadWriteLock _jointIndicesCacheLock; mutable bool _jointsCached { false };