From 8850d974a2d42d7364ca84d56f334897dd1b202c Mon Sep 17 00:00:00 2001 From: John Preston Date: Wed, 31 Oct 2018 13:55:22 +0400 Subject: [PATCH] Pass correct FileOrigin for userpics. --- Telegram/SourceFiles/calls/calls_panel.cpp | 8 ++++---- Telegram/SourceFiles/calls/calls_panel.h | 2 +- Telegram/SourceFiles/data/data_peer.cpp | 14 +++++++------- Telegram/SourceFiles/data/data_peer.h | 5 ++++- 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/Telegram/SourceFiles/calls/calls_panel.cpp b/Telegram/SourceFiles/calls/calls_panel.cpp index 9e6513793..3fd4c4680 100644 --- a/Telegram/SourceFiles/calls/calls_panel.cpp +++ b/Telegram/SourceFiles/calls/calls_panel.cpp @@ -523,13 +523,13 @@ void Panel::refreshUserPhoto() { if (isGoodUserPhoto(photo) && isNewPhoto(photo)) { _userPhotoId = photo->id; _userPhotoFull = true; - createUserpicCache(photo->full); + createUserpicCache(photo->full, _user->userpicPhotoOrigin()); } else if (_userPhoto.isNull()) { - createUserpicCache(_user->currentUserpic()); + createUserpicCache(_user->currentUserpic(), _user->userpicOrigin()); } } -void Panel::createUserpicCache(ImagePtr image) { +void Panel::createUserpicCache(ImagePtr image, Data::FileOrigin origin) { auto size = st::callWidth * cIntRetinaFactor(); auto options = _useTransparency ? (Images::Option::RoundedLarge | Images::Option::RoundedTopLeft | Images::Option::RoundedTopRight | Images::Option::Smooth) : Images::Option::None; if (image) { @@ -543,7 +543,7 @@ void Panel::createUserpicCache(ImagePtr image) { width = size; } _userPhoto = image->pixNoCache( - _user->userpicPhotoOrigin(), + origin, width, height, options, diff --git a/Telegram/SourceFiles/calls/calls_panel.h b/Telegram/SourceFiles/calls/calls_panel.h index df00ac55a..16b776dd6 100644 --- a/Telegram/SourceFiles/calls/calls_panel.h +++ b/Telegram/SourceFiles/calls/calls_panel.h @@ -92,7 +92,7 @@ private: void processUserPhoto(); void refreshUserPhoto(); bool isGoodUserPhoto(PhotoData *photo); - void createUserpicCache(ImagePtr image); + void createUserpicCache(ImagePtr image, Data::FileOrigin origin); QRect signalBarsRect() const; void paintSignalBarsBg(Painter &p); diff --git a/Telegram/SourceFiles/data/data_peer.cpp b/Telegram/SourceFiles/data/data_peer.cpp index 3f91ca743..1f617a6b3 100644 --- a/Telegram/SourceFiles/data/data_peer.cpp +++ b/Telegram/SourceFiles/data/data_peer.cpp @@ -187,7 +187,7 @@ void PeerData::setUserpicPhoto(const MTPPhoto &data) { ImagePtr PeerData::currentUserpic() const { if (_userpic) { - _userpic->load(userpicPhotoOrigin()); + _userpic->load(userpicOrigin()); if (_userpic->loaded()) { if (!useEmptyUserpic()) { _userpicEmpty = nullptr; @@ -203,7 +203,7 @@ ImagePtr PeerData::currentUserpic() const { void PeerData::paintUserpic(Painter &p, int x, int y, int size) const { if (auto userpic = currentUserpic()) { - p.drawPixmap(x, y, userpic->pixCircled(userpicPhotoOrigin(), size, size)); + p.drawPixmap(x, y, userpic->pixCircled(userpicOrigin(), size, size)); } else { _userpicEmpty->paint(p, x, y, x + size + x, size); } @@ -211,7 +211,7 @@ void PeerData::paintUserpic(Painter &p, int x, int y, int size) const { void PeerData::paintUserpicRounded(Painter &p, int x, int y, int size) const { if (auto userpic = currentUserpic()) { - p.drawPixmap(x, y, userpic->pixRounded(userpicPhotoOrigin(), size, size, ImageRoundRadius::Small)); + p.drawPixmap(x, y, userpic->pixRounded(userpicOrigin(), size, size, ImageRoundRadius::Small)); } else { _userpicEmpty->paintRounded(p, x, y, x + size + x, size); } @@ -219,14 +219,14 @@ void PeerData::paintUserpicRounded(Painter &p, int x, int y, int size) const { void PeerData::paintUserpicSquare(Painter &p, int x, int y, int size) const { if (auto userpic = currentUserpic()) { - p.drawPixmap(x, y, userpic->pix(userpicPhotoOrigin(), size, size)); + p.drawPixmap(x, y, userpic->pix(userpicOrigin(), size, size)); } else { _userpicEmpty->paintSquare(p, x, y, x + size + x, size); } } void PeerData::loadUserpic(bool loadFirst, bool prior) { - _userpic->load(userpicPhotoOrigin(), loadFirst, prior); + _userpic->load(userpicOrigin(), loadFirst, prior); } bool PeerData::userpicLoaded() const { @@ -256,7 +256,7 @@ void PeerData::saveUserpicRounded(const QString &path, int size) const { QPixmap PeerData::genUserpic(int size) const { if (auto userpic = currentUserpic()) { - return userpic->pixCircled(userpicPhotoOrigin(), size, size); + return userpic->pixCircled(userpicOrigin(), size, size); } auto result = QImage(QSize(size, size) * cIntRetinaFactor(), QImage::Format_ARGB32_Premultiplied); result.setDevicePixelRatio(cRetinaFactor()); @@ -270,7 +270,7 @@ QPixmap PeerData::genUserpic(int size) const { QPixmap PeerData::genUserpicRounded(int size) const { if (auto userpic = currentUserpic()) { - return userpic->pixRounded(userpicPhotoOrigin(), size, size, ImageRoundRadius::Small); + return userpic->pixRounded(userpicOrigin(), size, size, ImageRoundRadius::Small); } auto result = QImage(QSize(size, size) * cIntRetinaFactor(), QImage::Format_ARGB32_Premultiplied); result.setDevicePixelRatio(cRetinaFactor()); diff --git a/Telegram/SourceFiles/data/data_peer.h b/Telegram/SourceFiles/data/data_peer.h index 58c7f2dc3..306bf089d 100644 --- a/Telegram/SourceFiles/data/data_peer.h +++ b/Telegram/SourceFiles/data/data_peer.h @@ -183,10 +183,13 @@ public: PhotoId userpicPhotoId() const { return userpicPhotoUnknown() ? 0 : _userpicPhotoId; } + Data::FileOrigin userpicOrigin() const { + return Data::FileOrigin(Data::FileOriginPeerPhoto(id)); + } Data::FileOrigin userpicPhotoOrigin() const { return (isUser() && userpicPhotoId()) ? Data::FileOriginUserPhoto(bareId(), userpicPhotoId()) - : Data::FileOrigin(Data::FileOriginPeerPhoto(id)); + : Data::FileOrigin(); } int nameVersion = 1;