From b77318cb746fff43b22d704f53688ff5ce6591f2 Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Tue, 27 Oct 2020 13:06:58 +0100 Subject: [PATCH] WelcomeScreen: Don't rely on image format auto-detection The examples and marketplace pages show images that are decoded from data buffers. This happened without specifying the encoding format, which triggers image auto-detection. The negligible overhead of the auto-detection is usually not a problem, but the probing of image QImageIOHandlers that goes along with auto- detection can emit warnings. A concrete example is a warning in the TGA plugin which was added in Qt 5.15.1. Task-number: QTCREATORBUG-24853 Change-Id: I596604bde7621acf92e825f45e0c23ac4e90b78d Reviewed-by: Christian Stenger --- src/plugins/marketplace/productlistmodel.cpp | 4 +++- src/plugins/qtsupport/exampleslistmodel.cpp | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/plugins/marketplace/productlistmodel.cpp b/src/plugins/marketplace/productlistmodel.cpp index 0e240cc243e..13aabe176b8 100644 --- a/src/plugins/marketplace/productlistmodel.cpp +++ b/src/plugins/marketplace/productlistmodel.cpp @@ -33,6 +33,7 @@ #include #include +#include #include #include #include @@ -380,7 +381,8 @@ void SectionedProducts::onImageDownloadFinished(QNetworkReply *reply) if (reply->error() == QNetworkReply::NoError) { const QByteArray data = reply->readAll(); QPixmap pixmap; - if (pixmap.loadFromData(data)) { + const QString imageFormat = QFileInfo(reply->request().url().fileName()).suffix(); + if (pixmap.loadFromData(data, imageFormat.toLatin1())) { const QString url = reply->request().url().toString(); QPixmapCache::insert(url, pixmap.scaled(ProductListModel::defaultImageSize, Qt::KeepAspectRatio, Qt::SmoothTransformation)); diff --git a/src/plugins/qtsupport/exampleslistmodel.cpp b/src/plugins/qtsupport/exampleslistmodel.cpp index 9c895db6269..a983752838e 100644 --- a/src/plugins/qtsupport/exampleslistmodel.cpp +++ b/src/plugins/qtsupport/exampleslistmodel.cpp @@ -513,7 +513,7 @@ QPixmap ExamplesListModel::fetchPixmapAndUpdatePixmapCache(const QString &url) c if (!fetchedData.isEmpty()) { QBuffer imgBuffer(&fetchedData); imgBuffer.open(QIODevice::ReadOnly); - QImageReader reader(&imgBuffer); + QImageReader reader(&imgBuffer, QFileInfo(url).suffix().toLatin1()); QImage img = reader.read(); img = ScreenshotCropper::croppedImage(img, url, ListModel::defaultImageSize); pixmap = QPixmap::fromImage(img);