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 <qt_ci_bot@qt-project.org> Reviewed-by: Andreas Buhr <andreas.buhr@qt.io>bb10
parent
34a4fe0166
commit
e37919b758
|
|
@ -1,3 +0,0 @@
|
|||
# QTBUG-69064
|
||||
[testPainting]
|
||||
android
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue