17#include <KDecoration2/Decoration>
19#include <linux/input.h>
24static const QString s_socketName = QStringLiteral(
"wayland_test_kwin_dont_crash_empty_decoration-0");
35void DontCrashEmptyDecorationTest::initTestCase()
38 QSKIP(
"no render node available");
41 qRegisterMetaType<KWin::Window *>();
45 QRect(0, 0, 1280, 1024),
46 QRect(1280, 0, 1280, 1024),
50 qputenv(
"KWIN_COMPOSE", QByteArrayLiteral(
"O2"));
52 QVERIFY(applicationStartedSpy.wait());
55 QCOMPARE(outputs[0]->geometry(), QRect(0, 0, 1280, 1024));
56 QCOMPARE(outputs[1]->geometry(), QRect(1280, 0, 1280, 1024));
57 setenv(
"QT_QPA_PLATFORM",
"wayland",
true);
60void DontCrashEmptyDecorationTest::init()
66void DontCrashEmptyDecorationTest::testBug361551()
77 QVERIFY(!xcb_connection_has_error(c));
79 xcb_window_t windowId = xcb_generate_id(c);
80 xcb_create_window(c, XCB_COPY_FROM_PARENT, windowId,
rootWindow(), 0, 0, 10, 10, 0, XCB_WINDOW_CLASS_INPUT_OUTPUT, XCB_COPY_FROM_PARENT, 0,
nullptr);
81 xcb_map_window(c, windowId);
86 QVERIFY(windowCreatedSpy.wait());
87 X11Window *window = windowCreatedSpy.first().first().value<X11Window *>();
89 QCOMPARE(window->window(), windowId);
90 QVERIFY(window->isDecorated());
93 window->moveResize({0, 0, 0, 0});
94 QCOMPARE(window->frameGeometry(), QRect(0, 0, 0, 0));
97 xcb_unmap_window(c, windowId);
98 xcb_destroy_window(c, windowId);
102 QVERIFY(windowClosedSpy.wait());
108#include "dont_crash_empty_deco.moc"
void windowAdded(KWin::Window *)
QList< Output * > outputs() const
void setActiveOutput(Output *output)
#define WAYLANDTEST_MAIN(TestObject)
void setOutputConfig(const QList< QRect > &geometries)
XcbConnectionPtr createX11Connection()
QList< KWayland::Client::Output * > outputs
bool renderNodeAvailable()
std::unique_ptr< xcb_connection_t, XcbConnectionDeleter > XcbConnectionPtr
KWIN_EXPORT xcb_window_t rootWindow()
WaylandServer * waylandServer()
KWIN_EXPORT xcb_connection_t * connection()
InputRedirection * input()