From 8baf1052706bf89d1de1d893673ce52a3a67320a Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Wed, 20 Nov 2024 14:09:40 +0800 Subject: [PATCH] Ensure avatarJob is run on the respective account's QNAM thread Signed-off-by: Claudio Cambra --- src/gui/tray/usermodel.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/gui/tray/usermodel.cpp b/src/gui/tray/usermodel.cpp index 20fbcd2ee..30b3d699f 100644 --- a/src/gui/tray/usermodel.cpp +++ b/src/gui/tray/usermodel.cpp @@ -1655,12 +1655,20 @@ public: qCWarning(lcActivity) << "Invalid account:" << accountString; return; } - const auto avatarSize = requestedSize.width() > 0 ? requestedSize.width() : 64; - const auto avatarJob = new AvatarJob(accountState->account(), avatarUserId, avatarSize); - connect(avatarJob, &AvatarJob::avatarPixmap, this, [&](const QImage &avatarImg) { - handleDone(AvatarJob::makeCircularAvatar(avatarImg)); + + const auto account = accountState->account(); + const auto qnam = account->networkAccessManager(); + + QMetaObject::invokeMethod(qnam, [this, requestedSize, avatarUserId, account]() { + const auto avatarSize = requestedSize.width() > 0 ? requestedSize.width() : 64; + const auto avatarJob = new AvatarJob(account, avatarUserId, avatarSize); + connect(avatarJob, &AvatarJob::avatarPixmap, this, [&](const QImage &avatarImg) { + QMetaObject::invokeMethod(this, [this, avatarImg] { + handleDone(AvatarJob::makeCircularAvatar(avatarImg)); + }); + }); + avatarJob->start(); }); - avatarJob->start(); return; } -- 2.30.2