From 855d4692fe1d90d60b82f4ba5b640c8ec703a691 Mon Sep 17 00:00:00 2001 From: John Preston Date: Wed, 15 Jun 2022 16:50:53 +0400 Subject: [PATCH] Fallback to large profile video in chat / chats list. --- Telegram/SourceFiles/data/data_photo.cpp | 8 ++++++-- Telegram/SourceFiles/data/data_photo.h | 1 + Telegram/SourceFiles/data/data_photo_media.cpp | 7 ++++--- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/Telegram/SourceFiles/data/data_photo.cpp b/Telegram/SourceFiles/data/data_photo.cpp index aa9e148a7..6690246cb 100644 --- a/Telegram/SourceFiles/data/data_photo.cpp +++ b/Telegram/SourceFiles/data/data_photo.cpp @@ -443,7 +443,7 @@ int PhotoData::height() const { Data::CloudFile &PhotoData::videoFile(PhotoSize size) { Expects(_videoSizes != nullptr); - return (size == PhotoSize::Small) + return (size == PhotoSize::Small && hasVideoSmall()) ? _videoSizes->small : _videoSizes->large; } @@ -451,7 +451,7 @@ Data::CloudFile &PhotoData::videoFile(PhotoSize size) { const Data::CloudFile &PhotoData::videoFile(PhotoSize size) const { Expects(_videoSizes != nullptr); - return (size == PhotoSize::Small) + return (size == PhotoSize::Small && hasVideoSmall()) ? _videoSizes->small : _videoSizes->large; } @@ -461,6 +461,10 @@ bool PhotoData::hasVideo() const { return _videoSizes != nullptr; } +bool PhotoData::hasVideoSmall() const { + return hasVideo() && _videoSizes->small.location.valid(); +} + bool PhotoData::videoLoading(Data::PhotoSize size) const { return _videoSizes && videoFile(size).loader != nullptr; } diff --git a/Telegram/SourceFiles/data/data_photo.h b/Telegram/SourceFiles/data/data_photo.h index e4138dbe4..aeec93009 100644 --- a/Telegram/SourceFiles/data/data_photo.h +++ b/Telegram/SourceFiles/data/data_photo.h @@ -127,6 +127,7 @@ public: [[nodiscard]] int imageByteSize(Data::PhotoSize size) const; [[nodiscard]] bool hasVideo() const; + [[nodiscard]] bool hasVideoSmall() const; [[nodiscard]] bool videoLoading(Data::PhotoSize size) const; [[nodiscard]] bool videoFailed(Data::PhotoSize size) const; void loadVideo(Data::PhotoSize size, Data::FileOrigin origin); diff --git a/Telegram/SourceFiles/data/data_photo_media.cpp b/Telegram/SourceFiles/data/data_photo_media.cpp index 54c8ab73c..312b672f5 100644 --- a/Telegram/SourceFiles/data/data_photo_media.cpp +++ b/Telegram/SourceFiles/data/data_photo_media.cpp @@ -118,7 +118,8 @@ void PhotoMedia::set( } QByteArray PhotoMedia::videoContent(PhotoSize size) const { - return (size == PhotoSize::Large) ? _videoBytesLarge : _videoBytesSmall; + const auto small = (size == PhotoSize::Small) && _owner->hasVideoSmall(); + return small ? _videoBytesSmall : _videoBytesLarge; } QSize PhotoMedia::videoSize(PhotoSize size) const { @@ -133,8 +134,8 @@ void PhotoMedia::videoWanted(PhotoSize size, Data::FileOrigin origin) { } void PhotoMedia::setVideo(PhotoSize size, QByteArray content) { - ((size == PhotoSize::Large) ? _videoBytesLarge : _videoBytesSmall) - = std::move(content); + const auto small = (size == PhotoSize::Small) && _owner->hasVideoSmall(); + (small ? _videoBytesSmall : _videoBytesLarge) = std::move(content); } bool PhotoMedia::loaded() const {