testXdgShellWindow already tests intricate subsurface size changes. The surface pixmaps are handled differently now too, so the test is not useful as it used to be 4 or 5 years ago.remotes/origin/work/zzag/debug
parent
c54a324e99
commit
959bb661af
2 changed files with 0 additions and 111 deletions
@ -1,110 +0,0 @@ |
|||||||
/*
|
|
||||||
KWin - the KDE window manager |
|
||||||
This file is part of the KDE project. |
|
||||||
|
|
||||||
SPDX-FileCopyrightText: 2019 Roman Gilg <subdiff@gmail.com> |
|
||||||
|
|
||||||
SPDX-License-Identifier: GPL-2.0-or-later |
|
||||||
*/ |
|
||||||
#include "generic_scene_opengl_test.h" |
|
||||||
|
|
||||||
#include "composite.h" |
|
||||||
#include "scene/workspacescene.h" |
|
||||||
#include "wayland_server.h" |
|
||||||
#include "window.h" |
|
||||||
|
|
||||||
#include <KWayland/Client/subsurface.h> |
|
||||||
#include <KWayland/Client/surface.h> |
|
||||||
|
|
||||||
namespace KWin |
|
||||||
{ |
|
||||||
|
|
||||||
static const QString s_socketName = QStringLiteral("wayland_test_buffer_size_change-0"); |
|
||||||
|
|
||||||
class BufferSizeChangeTest : public GenericSceneOpenGLTest |
|
||||||
{ |
|
||||||
Q_OBJECT |
|
||||||
public: |
|
||||||
BufferSizeChangeTest() |
|
||||||
: GenericSceneOpenGLTest(QByteArrayLiteral("O2")) |
|
||||||
{ |
|
||||||
} |
|
||||||
private Q_SLOTS: |
|
||||||
void init(); |
|
||||||
void testShmBufferSizeChange(); |
|
||||||
void testShmBufferSizeChangeOnSubSurface(); |
|
||||||
}; |
|
||||||
|
|
||||||
void BufferSizeChangeTest::init() |
|
||||||
{ |
|
||||||
QVERIFY(Test::setupWaylandConnection()); |
|
||||||
} |
|
||||||
|
|
||||||
void BufferSizeChangeTest::testShmBufferSizeChange() |
|
||||||
{ |
|
||||||
// This test verifies that an SHM buffer size change is handled correctly
|
|
||||||
|
|
||||||
std::unique_ptr<KWayland::Client::Surface> surface(Test::createSurface()); |
|
||||||
QVERIFY(surface != nullptr); |
|
||||||
|
|
||||||
std::unique_ptr<Test::XdgToplevel> shellSurface(Test::createXdgToplevelSurface(surface.get())); |
|
||||||
QVERIFY(shellSurface != nullptr); |
|
||||||
|
|
||||||
// set buffer size
|
|
||||||
Window *window = Test::renderAndWaitForShown(surface.get(), QSize(100, 50), Qt::blue); |
|
||||||
QVERIFY(window); |
|
||||||
|
|
||||||
// add a first repaint
|
|
||||||
QSignalSpy frameRenderedSpy(Compositor::self()->scene(), &WorkspaceScene::frameRendered); |
|
||||||
Compositor::self()->scene()->addRepaintFull(); |
|
||||||
QVERIFY(frameRenderedSpy.wait()); |
|
||||||
|
|
||||||
// now change buffer size
|
|
||||||
Test::render(surface.get(), QSize(30, 10), Qt::red); |
|
||||||
|
|
||||||
QSignalSpy damagedSpy(window, &Window::damaged); |
|
||||||
QVERIFY(damagedSpy.wait()); |
|
||||||
KWin::Compositor::self()->scene()->addRepaintFull(); |
|
||||||
QVERIFY(frameRenderedSpy.wait()); |
|
||||||
} |
|
||||||
|
|
||||||
void BufferSizeChangeTest::testShmBufferSizeChangeOnSubSurface() |
|
||||||
{ |
|
||||||
// setup parent surface
|
|
||||||
std::unique_ptr<KWayland::Client::Surface> parentSurface(Test::createSurface()); |
|
||||||
QVERIFY(parentSurface != nullptr); |
|
||||||
std::unique_ptr<Test::XdgToplevel> shellSurface(Test::createXdgToplevelSurface(parentSurface.get())); |
|
||||||
QVERIFY(shellSurface != nullptr); |
|
||||||
|
|
||||||
// setup sub surface
|
|
||||||
std::unique_ptr<KWayland::Client::Surface> surface(Test::createSurface()); |
|
||||||
QVERIFY(surface != nullptr); |
|
||||||
std::unique_ptr<KWayland::Client::SubSurface> subSurface(Test::createSubSurface(surface.get(), parentSurface.get())); |
|
||||||
QVERIFY(subSurface != nullptr); |
|
||||||
|
|
||||||
// set buffer sizes
|
|
||||||
Test::render(surface.get(), QSize(30, 10), Qt::red); |
|
||||||
Window *parent = Test::renderAndWaitForShown(parentSurface.get(), QSize(100, 50), Qt::blue); |
|
||||||
QVERIFY(parent); |
|
||||||
|
|
||||||
// add a first repaint
|
|
||||||
QSignalSpy frameRenderedSpy(Compositor::self()->scene(), &WorkspaceScene::frameRendered); |
|
||||||
Compositor::self()->scene()->addRepaintFull(); |
|
||||||
QVERIFY(frameRenderedSpy.wait()); |
|
||||||
|
|
||||||
// change buffer size of sub surface
|
|
||||||
QSignalSpy damagedParentSpy(parent, &Window::damaged); |
|
||||||
Test::render(surface.get(), QSize(20, 10), Qt::red); |
|
||||||
parentSurface->commit(KWayland::Client::Surface::CommitFlag::None); |
|
||||||
|
|
||||||
QVERIFY(damagedParentSpy.wait()); |
|
||||||
|
|
||||||
// add a second repaint
|
|
||||||
KWin::Compositor::self()->scene()->addRepaintFull(); |
|
||||||
QVERIFY(frameRenderedSpy.wait()); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
WAYLANDTEST_MAIN(KWin::BufferSizeChangeTest) |
|
||||||
#include "buffer_size_change_test.moc" |
|
||||||
Loading…
Reference in new issue