summary refs log tree commit diff
path: root/src/MxcImageProvider.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/MxcImageProvider.cpp')
-rw-r--r--src/MxcImageProvider.cpp28
1 files changed, 19 insertions, 9 deletions
diff --git a/src/MxcImageProvider.cpp b/src/MxcImageProvider.cpp

index d04eab24..8e67375d 100644 --- a/src/MxcImageProvider.cpp +++ b/src/MxcImageProvider.cpp
@@ -3,6 +3,7 @@ #include "Cache.h" #include "Logging.h" #include "MatrixClient.h" +#include "Utils.h" void MxcImageResponse::run() @@ -14,11 +15,15 @@ MxcImageResponse::run() .arg(m_requestedSize.height()); auto data = cache::image(fileName); - if (!data.isNull() && m_image.loadFromData(data)) { + if (!data.isNull()) { + m_image = utils::readImage(&data); m_image = m_image.scaled(m_requestedSize, Qt::KeepAspectRatio); m_image.setText("mxc url", "mxc://" + m_id); - emit finished(); - return; + + if (!m_image.isNull()) { + emit finished(); + return; + } } mtx::http::ThumbOpts opts; @@ -39,17 +44,22 @@ MxcImageResponse::run() auto data = QByteArray(res.data(), res.size()); cache::saveImage(fileName, data); - m_image.loadFromData(data); + m_image = utils::readImage(&data); m_image.setText("mxc url", "mxc://" + m_id); emit finished(); }); } else { auto data = cache::image(m_id); - if (!data.isNull() && m_image.loadFromData(data)) { + + if (!data.isNull()) { + m_image = utils::readImage(&data); m_image.setText("mxc url", "mxc://" + m_id); - emit finished(); - return; + + if (!m_image.isNull()) { + emit finished(); + return; + } } http::client()->download( @@ -73,11 +83,11 @@ MxcImageResponse::run() mtx::crypto::decrypt_file(temp, m_encryptionInfo.value())); auto data = QByteArray(temp.data(), temp.size()); - m_image.loadFromData(data); + cache::saveImage(m_id, data); + m_image = utils::readImage(&data); m_image.setText("original filename", QString::fromStdString(originalFilename)); m_image.setText("mxc url", "mxc://" + m_id); - cache::saveImage(m_id, data); emit finished(); });