Rex Dieter 0aff623
From 01f42466d37dbbdedd0c2386f2b83c3bc7c3873b Mon Sep 17 00:00:00 2001
Rex Dieter 0aff623
From: Allan Sandfeld Jensen <allan.jensen@digia.com>
Rex Dieter 0aff623
Date: Mon, 26 May 2014 09:25:42 +0200
Rex Dieter 0aff623
Subject: [PATCH 34/37] Fix raster graphics on X11 RGB30
Rex Dieter 0aff623
Rex Dieter 0aff623
The window surface incorrectly assumes that any pixel depth of 24 or
Rex Dieter 0aff623
above would be on 8bit/color. This breaks 10bit/color formats like
Rex Dieter 0aff623
RGB30. This patch instead make it specifically check for color depth 24
Rex Dieter 0aff623
or 32 which are the two with 8bit/color.
Rex Dieter 0aff623
Rex Dieter 0aff623
Task-number: QTBUG-25998
Rex Dieter 0aff623
Change-Id: Id0b7e07bdb64679f8c647158938da12efede9142
Rex Dieter 0aff623
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Rex Dieter 0aff623
---
Rex Dieter 0aff623
 src/gui/painting/qwindowsurface_raster.cpp | 2 +-
Rex Dieter 0aff623
 1 file changed, 1 insertion(+), 1 deletion(-)
Rex Dieter 0aff623
Rex Dieter 0aff623
diff --git a/src/gui/painting/qwindowsurface_raster.cpp b/src/gui/painting/qwindowsurface_raster.cpp
Rex Dieter 0aff623
index ae5a591..1f2b3fe 100644
Rex Dieter 0aff623
--- a/src/gui/painting/qwindowsurface_raster.cpp
Rex Dieter 0aff623
+++ b/src/gui/painting/qwindowsurface_raster.cpp
Rex Dieter 0aff623
@@ -256,7 +256,7 @@ void QRasterWindowSurface::flush(QWidget *widget, const QRegion &rgn, const QPoi
Rex Dieter 0aff623
     {
Rex Dieter 0aff623
         int depth = widget->x11Info().depth();
Rex Dieter 0aff623
         const QImage &src = d->image->image;
Rex Dieter 0aff623
-        if (src.format() != QImage::Format_RGB32 || depth < 24 || X11->bppForDepth.value(depth) != 32) {
Rex Dieter 0aff623
+        if (src.format() != QImage::Format_RGB32 || (depth != 24 && depth != 32) || X11->bppForDepth.value(depth) != 32) {
Rex Dieter 0aff623
             Q_ASSERT(src.depth() >= 16);
Rex Dieter 0aff623
             const QImage sub_src(src.scanLine(br.y()) + br.x() * (uint(src.depth()) / 8),
Rex Dieter 0aff623
                                  br.width(), br.height(), src.bytesPerLine(), src.format());
Rex Dieter 0aff623
-- 
Rex Dieter 0aff623
1.9.3
Rex Dieter 0aff623