From f0e18ac6190ee7f3363b638289ec52437abc7f76 Mon Sep 17 00:00:00 2001 From: John Preston Date: Tue, 23 Oct 2018 17:04:42 +0400 Subject: [PATCH] Add better unloading for ImageSource. --- .../SourceFiles/ui/image/image_source.cpp | 25 ++++++++++++++----- Telegram/SourceFiles/ui/image/image_source.h | 1 + 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/Telegram/SourceFiles/ui/image/image_source.cpp b/Telegram/SourceFiles/ui/image/image_source.cpp index 79df7b107..1e1bf3229 100644 --- a/Telegram/SourceFiles/ui/image/image_source.cpp +++ b/Telegram/SourceFiles/ui/image/image_source.cpp @@ -22,15 +22,19 @@ ImageSource::ImageSource(QImage &&data, const QByteArray &format) } void ImageSource::load( - Data::FileOrigin origin, - bool loadFirst, - bool prior) { + Data::FileOrigin origin, + bool loadFirst, + bool prior) { + if (_data.isNull() && !_bytes.isEmpty()) { + _data = App::readImage(_bytes, &_format, false); + } } void ImageSource::loadEvenCancelled( - Data::FileOrigin origin, - bool loadFirst, - bool prior) { + Data::FileOrigin origin, + bool loadFirst, + bool prior) { + load(origin, loadFirst, prior); } QImage ImageSource::takeLoaded() { @@ -38,6 +42,15 @@ QImage ImageSource::takeLoaded() { } void ImageSource::unload() { + if (_bytes.isEmpty() && !_data.isNull()) { + if (_format.isEmpty()) { + _format = "PNG"; + } + + QBuffer buffer(&_bytes); + _data.save(&buffer, _format); + } + _data = QImage(); } void ImageSource::automaticLoad( diff --git a/Telegram/SourceFiles/ui/image/image_source.h b/Telegram/SourceFiles/ui/image/image_source.h index 7fa02445e..a025c8adf 100644 --- a/Telegram/SourceFiles/ui/image/image_source.h +++ b/Telegram/SourceFiles/ui/image/image_source.h @@ -55,6 +55,7 @@ public: private: QImage _data; QByteArray _format; + QByteArray _bytes; };