diff options
Diffstat (limited to 'src/quick/util/qquickpixmapcache.cpp')
-rw-r--r-- | src/quick/util/qquickpixmapcache.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/quick/util/qquickpixmapcache.cpp b/src/quick/util/qquickpixmapcache.cpp index dc8bed8125..ced0acd9ab 100644 --- a/src/quick/util/qquickpixmapcache.cpp +++ b/src/quick/util/qquickpixmapcache.cpp @@ -61,9 +61,7 @@ #include <QThread> #include <QMutex> #include <QMutexLocker> -#include <QWaitCondition> #include <QBuffer> -#include <QWaitCondition> #include <QtCore/qdebug.h> #include <private/qobject_p.h> #include <QQmlFile> @@ -222,7 +220,6 @@ private: QMutex mutex; QQuickPixmapReaderThreadObject *threadObject; - QWaitCondition waitCondition; #if QT_CONFIG(qml_network) QNetworkAccessManager *networkAccessManager(); @@ -372,15 +369,27 @@ static void maybeRemoveAlpha(QImage *image) switch (image->format()) { case QImage::Format_RGBA8888: case QImage::Format_RGBA8888_Premultiplied: + if (image->data_ptr()->convertInPlace(QImage::Format_RGBX8888, Qt::AutoColor)) + break; + *image = image->convertToFormat(QImage::Format_RGBX8888); break; case QImage::Format_A2BGR30_Premultiplied: + if (image->data_ptr()->convertInPlace(QImage::Format_BGR30, Qt::AutoColor)) + break; + *image = image->convertToFormat(QImage::Format_BGR30); break; case QImage::Format_A2RGB30_Premultiplied: + if (image->data_ptr()->convertInPlace(QImage::Format_RGB30, Qt::AutoColor)) + break; + *image = image->convertToFormat(QImage::Format_RGB30); break; default: + if (image->data_ptr()->convertInPlace(QImage::Format_RGB32, Qt::AutoColor)) + break; + *image = image->convertToFormat(QImage::Format_RGB32); break; } |