Revert "Fix tst_QWidgetRepaintManager on XCB"
This reverts commit 0b94530a310f3d5224dbee61b5774e0eb1500f27. Reason for revert: Intended fix didn't work Change-Id: Ib7b3caf4130ac92acce4d12b2ed0004c06cdacc4 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
This commit is contained in:
parent
ce955d1907
commit
600a5c2035
11
tests/auto/widgets/kernel/qwidgetrepaintmanager/BLACKLIST
Normal file
11
tests/auto/widgets/kernel/qwidgetrepaintmanager/BLACKLIST
Normal file
@ -0,0 +1,11 @@
|
||||
# Temporary for QTBUG-109036
|
||||
[fastMove]
|
||||
opensuse-leap
|
||||
|
||||
# Temporary for QTBUG-109036
|
||||
[moveAccross]
|
||||
opensuse-leap
|
||||
|
||||
# Temporary for QTBUG-109036
|
||||
[moveInOutOverlapped]
|
||||
opensuse-leap
|
@ -262,8 +262,6 @@ private slots:
|
||||
void moveInOutOverlapped();
|
||||
|
||||
protected:
|
||||
bool m_xcb = false;
|
||||
|
||||
/*
|
||||
This helper compares the widget as rendered into the backingstore with the widget
|
||||
as rendered via QWidget::grab. The latter always produces a fully rendered image,
|
||||
@ -281,44 +279,14 @@ protected:
|
||||
}
|
||||
|
||||
QImage backingstoreContent = platformBackingStore->toImage();
|
||||
|
||||
// QXcbBackingStore::toImage() is not reliable. Take a screenshot instead.
|
||||
// X11 draws the screen in a thread, which is not a QThread.
|
||||
// The first screenshot is therefore unlikely to contain the correct image.
|
||||
// It is taken just to obtain size and format.
|
||||
QWidget *window = nullptr;
|
||||
if (m_xcb) {
|
||||
|
||||
// Widget must be shown to be caught on a screen shot
|
||||
if (!w->isWindow()) {
|
||||
qWarning() << "Hidden widget" << w << "cannot be compared on XCB";
|
||||
return false;
|
||||
}
|
||||
|
||||
window = w->window();
|
||||
Q_ASSERT(window);
|
||||
|
||||
backingstoreContent = window->screen()->grabWindow(window->winId()).toImage();
|
||||
}
|
||||
|
||||
if (!w->isWindow()) {
|
||||
const qreal dpr = w->devicePixelRatioF();
|
||||
const QPointF offset = w->mapTo(w->window(), QPointF(0, 0)) * dpr;
|
||||
backingstoreContent = backingstoreContent.copy(offset.x(), offset.y(), w->width() * dpr, w->height() * dpr);
|
||||
}
|
||||
|
||||
const QImage widgetRender = w->grab().toImage().convertToFormat(backingstoreContent.format());
|
||||
|
||||
// XCB: Process events, until screenshot equals widgetRender or timeout kicks in.
|
||||
if (m_xcb) {
|
||||
// Unuse result to hit MANUAL_DEBUG code path
|
||||
Q_UNUSED(QTest::qWaitFor([&](){
|
||||
backingstoreContent = window->screen()->grabWindow(window->winId()).toImage();
|
||||
return widgetRender == backingstoreContent;
|
||||
}));
|
||||
}
|
||||
|
||||
const bool result = widgetRender == backingstoreContent;
|
||||
const bool result = backingstoreContent == widgetRender;
|
||||
|
||||
#ifdef MANUAL_DEBUG
|
||||
if (!result) {
|
||||
@ -366,10 +334,6 @@ void tst_QWidgetRepaintManager::initTestCase()
|
||||
|
||||
m_implementsScroll = widget.backingStore()->handle()->scroll(QRegion(widget.rect()), 1, 1);
|
||||
qInfo() << QGuiApplication::platformName() << "QPA backend implements scroll:" << m_implementsScroll;
|
||||
|
||||
#if defined(QT_BUILD_INTERNAL)
|
||||
m_xcb = QGuiApplication::platformName().contains("xcb", Qt::CaseInsensitive);
|
||||
#endif
|
||||
}
|
||||
|
||||
void tst_QWidgetRepaintManager::cleanup()
|
||||
|
Loading…
x
Reference in New Issue
Block a user