aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/scenegraph/adaptations/software/qsgsoftwarepixmaptexture.cpp
diff options
context:
space:
mode:
authorAndy Nichols <andy.nichols@qt.io>2016-06-07 12:57:04 +0200
committerLaszlo Agocs <laszlo.agocs@theqtcompany.com>2016-06-07 22:36:20 +0000
commit0201c7dd3fbbe2a3ce9e6c6d91ae3c841e103971 (patch)
tree71e1c18f87e5919948a2a4071c03836825eb279d /src/quick/scenegraph/adaptations/software/qsgsoftwarepixmaptexture.cpp
parentad5b72ab28ad91a5be498f0424cdf50678574ff8 (diff)
Software Adaptation: Obey QQuickWindow::TextureIsOpaque flag
Force a image format conversion when requesting an Opaque texture. There seems to be no way to do this with QPixmap::fromImage(...) so a copy of the QImage must be made first which is unfortunate. This is further evidence that the Texture should be QImage based instead of QPixmap based by default. Change-Id: I89fb380e8e786d4ff93f01eb6466e118c2851f7a Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Diffstat (limited to 'src/quick/scenegraph/adaptations/software/qsgsoftwarepixmaptexture.cpp')
-rw-r--r--src/quick/scenegraph/adaptations/software/qsgsoftwarepixmaptexture.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/quick/scenegraph/adaptations/software/qsgsoftwarepixmaptexture.cpp b/src/quick/scenegraph/adaptations/software/qsgsoftwarepixmaptexture.cpp
index e04c400af3..534a0a4ec6 100644
--- a/src/quick/scenegraph/adaptations/software/qsgsoftwarepixmaptexture.cpp
+++ b/src/quick/scenegraph/adaptations/software/qsgsoftwarepixmaptexture.cpp
@@ -41,11 +41,17 @@
QT_BEGIN_NAMESPACE
-QSGSoftwarePixmapTexture::QSGSoftwarePixmapTexture(const QImage &image)
+QSGSoftwarePixmapTexture::QSGSoftwarePixmapTexture(const QImage &image, uint flags)
+{
// Prevent pixmap format conversion to reduce memory consumption
// and surprises in calling code. (See QTBUG-47328)
- : m_pixmap(QPixmap::fromImage(image, Qt::NoFormatConversion))
-{
+ if (flags & QSGRenderContext::CreateTexture_Alpha) {
+ //If texture should have an alpha
+ m_pixmap = QPixmap::fromImage(image, Qt::NoFormatConversion);
+ } else {
+ //Force opaque texture
+ m_pixmap = QPixmap::fromImage(image.convertToFormat(QImage::Format_RGB32), Qt::NoFormatConversion);
+ }
}
QSGSoftwarePixmapTexture::QSGSoftwarePixmapTexture(const QPixmap &pixmap)