From e37919b758799e71a8481ae9edf690bc7b01c70a Mon Sep 17 00:00:00 2001 From: Ivan Solovev Date: Fri, 25 Feb 2022 09:59:03 +0100 Subject: [PATCH] Android: fix tst_QFrame::testPainting When we create a QPixmap using QWidget::grab(), a default system image format is used for that. On Android this format is ARGB32_Premultiplied, while on the desktop systems it is RGB32. The images that are saved in the resources and used as references, also have the RGB32 format. As a result, on Android we need to convert the pixmap to a proper format before comparing it to the reference. Fixes: QTBUG-69064 Pick-to: 6.3 6.2 Change-Id: I2d881e508d34e0b1a2a1a7bffcbc71ae2907d31d Reviewed-by: Qt CI Bot Reviewed-by: Andreas Buhr --- tests/auto/widgets/widgets/qframe/BLACKLIST | 3 --- tests/auto/widgets/widgets/qframe/tst_qframe.cpp | 11 ++++++++++- 2 files changed, 10 insertions(+), 4 deletions(-) delete mode 100644 tests/auto/widgets/widgets/qframe/BLACKLIST diff --git a/tests/auto/widgets/widgets/qframe/BLACKLIST b/tests/auto/widgets/widgets/qframe/BLACKLIST deleted file mode 100644 index 3a28dd1239..0000000000 --- a/tests/auto/widgets/widgets/qframe/BLACKLIST +++ /dev/null @@ -1,3 +0,0 @@ -# QTBUG-69064 -[testPainting] -android diff --git a/tests/auto/widgets/widgets/qframe/tst_qframe.cpp b/tests/auto/widgets/widgets/qframe/tst_qframe.cpp index b5272f6b1a..65585123a9 100644 --- a/tests/auto/widgets/widgets/qframe/tst_qframe.cpp +++ b/tests/auto/widgets/widgets/qframe/tst_qframe.cpp @@ -173,7 +173,16 @@ void tst_QFrame::testPainting() frame.setMidLineWidth(midLineWidth); frame.resize(16, 16); - const QPixmap pixmap = frame.grab(); + QPixmap pixmap = frame.grab(); +#ifdef Q_OS_ANDROID + // QPixmap is created with system's default format, which is + // ARGB32_Premultiplied for Android. For desktop systems the format is + // RGB32, so that's also the format of the images in resources. So on + // Android we need to explicitly convert the pixmap to a proper format. + QImage img = pixmap.toImage(); + QVERIFY(img.reinterpretAsFormat(QImage::Format_RGB32)); + pixmap = QPixmap::fromImage(img); +#endif const QString fileName = QLatin1String("images/") + basename + QLatin1Char('_') + QString::number(lineWidth) + QLatin1Char('_') + QString::number(midLineWidth)