/* SPDX-FileCopyrightText: 2024 Vlad Zahorodnii SPDX-License-Identifier: GPL-2.0-or-later */ #include "kwin_wayland_test.h" #include "core/output.h" #include "wayland_server.h" #include "workspace.h" namespace KWin { static const QString s_socketName = QStringLiteral("wayland_test_kwin_xinerama-0"); class XineramaTest : public QObject { Q_OBJECT private Q_SLOTS: void initTestCase(); void indexToOutput(); }; void XineramaTest::initTestCase() { QSignalSpy applicationStartedSpy(kwinApp(), &Application::started); QVERIFY(waylandServer()->init(s_socketName)); kwinApp()->start(); QVERIFY(applicationStartedSpy.wait()); } void XineramaTest::indexToOutput() { Test::setOutputConfig({ Test::OutputInfo{ .geometry = QRect(0, 0, 1280, 1024), .scale = 1.5, }, Test::OutputInfo{ .geometry = QRect(1280, 0, 1280, 1024), .scale = 1.5, }, }); kwinApp()->setXwaylandScale(1.5); // Start Xwayland Test::XcbConnectionPtr c = Test::createX11Connection(); QVERIFY(!xcb_connection_has_error(c.get())); const auto outputs = workspace()->outputs(); QCOMPARE(workspace()->xineramaIndexToOutput(0), outputs.at(0)); QCOMPARE(workspace()->xineramaIndexToOutput(1), outputs.at(1)); workspace()->setOutputOrder({outputs[1], outputs[0]}); QCOMPARE(workspace()->xineramaIndexToOutput(0), outputs.at(1)); QCOMPARE(workspace()->xineramaIndexToOutput(1), outputs.at(0)); } } // namespace KWin WAYLANDTEST_MAIN(KWin::XineramaTest) #include "xinerama_test.moc"