aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/user.cpp15
1 files changed, 12 insertions, 3 deletions
diff --git a/lib/user.cpp b/lib/user.cpp
index 5dea3942..641f6a6b 100644
--- a/lib/user.cpp
+++ b/lib/user.cpp
@@ -154,10 +154,11 @@ void User::Private::setAvatarForRoom(const Room* r, const QUrl& newUrl,
}
if (newUrl != mostUsedAvatar.url()) {
// Check if the new avatar is about to become most used.
- if (avatarsToRooms.count(newUrl) >= totalRooms - avatarsToRooms.size()) {
+ const auto newUrlUsage = avatarsToRooms.count(newUrl);
+ if (newUrlUsage >= totalRooms - avatarsToRooms.size()) {
QElapsedTimer et;
if (totalRooms > MIN_JOINED_ROOMS_TO_LOG) {
- qCDebug(MAIN)
+ qCInfo(MAIN)
<< "Switching the most used avatar of user" << userId
<< "from" << mostUsedAvatar.url().toDisplayString() << "to"
<< newUrl.toDisplayString();
@@ -165,7 +166,15 @@ void User::Private::setAvatarForRoom(const Room* r, const QUrl& newUrl,
}
avatarsToRooms.remove(newUrl);
auto nextMostUsedIt = otherAvatar(newUrl);
- Q_ASSERT(nextMostUsedIt != otherAvatars.end());
+ if (nextMostUsedIt == otherAvatars.end()) {
+ qCCritical(MAIN)
+ << userId << "doesn't have" << newUrl.toDisplayString()
+ << "in otherAvatars though it seems to be used in"
+ << newUrlUsage << "rooms";
+ Q_ASSERT(false);
+ otherAvatars.emplace_back(makeAvatar(newUrl));
+ nextMostUsedIt = otherAvatars.end() - 1;
+ }
std::swap(mostUsedAvatar, *nextMostUsedIt);
const auto& roomMap = connection->roomMap();
for (const auto* r1 : roomMap)