summaryrefslogtreecommitdiffstats
path: root/tests/auto/compositor
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2018-12-22 18:53:35 +0100
committerLiang Qi <liang.qi@qt.io>2018-12-22 18:53:35 +0100
commit5a6020f6efb4f09a77745614c6d1c0369bc5e365 (patch)
treeed8dec085d4f2a7ac359e5bbbb432b8449fb82fa /tests/auto/compositor
parented03ec25de7e44d8e9a6aea359518851f5a8efa9 (diff)
parentf2dc41b5babf0a7b51a1735f290540d7be695042 (diff)
Merge remote-tracking branch 'origin/5.12' into dev
Conflicts: README src/hardwareintegration/client/xcomposite_share/xcomposite_share.pri Change-Id: I7cbbf39916821f0f1749e3ccab3151f68f4aa1ac
Diffstat (limited to 'tests/auto/compositor')
-rw-r--r--tests/auto/compositor/compositor/compositor.pro4
-rw-r--r--tests/auto/compositor/compositor/tst_compositor.cpp56
2 files changed, 55 insertions, 5 deletions
diff --git a/tests/auto/compositor/compositor/compositor.pro b/tests/auto/compositor/compositor/compositor.pro
index 29443f7a9..7cf40557b 100644
--- a/tests/auto/compositor/compositor/compositor.pro
+++ b/tests/auto/compositor/compositor/compositor.pro
@@ -7,8 +7,8 @@ QT += core-private gui-private waylandcompositor waylandcompositor-private
QMAKE_USE += wayland-client wayland-server
-qtConfig(xkbcommon-evdev): \
- QMAKE_USE += xkbcommon_evdev
+qtConfig(xkbcommon): \
+ QMAKE_USE += xkbcommon
WAYLANDCLIENTSOURCES += \
../../../../src/3rdparty/protocol/xdg-shell-unstable-v5.xml \
diff --git a/tests/auto/compositor/compositor/tst_compositor.cpp b/tests/auto/compositor/compositor/tst_compositor.cpp
index 78e01af7e..8335690f2 100644
--- a/tests/auto/compositor/compositor/tst_compositor.cpp
+++ b/tests/auto/compositor/compositor/tst_compositor.cpp
@@ -58,7 +58,7 @@ class tst_WaylandCompositor : public QObject
private slots:
void init();
void seatCapabilities();
-#if QT_CONFIG(xkbcommon_evdev)
+#if QT_CONFIG(xkbcommon)
void simpleKeyboard();
void keyboardKeymaps();
void keyboardLayoutSwitching();
@@ -73,11 +73,13 @@ private slots:
void multipleClients();
void geometry();
void modes();
+ void comparingModes();
void sizeFollowsWindow();
void mapSurface();
void mapSurfaceHiDpi();
void frameCallback();
void removeOutput();
+ void customSurface();
void advertisesXdgShellSupport();
void createsXdgSurfaces();
@@ -170,7 +172,7 @@ void tst_WaylandCompositor::multipleClients()
QTRY_COMPARE(compositor.surfaces.size(), 0);
}
-#if QT_CONFIG(xkbcommon_evdev)
+#if QT_CONFIG(xkbcommon)
void tst_WaylandCompositor::simpleKeyboard()
{
@@ -283,7 +285,7 @@ void tst_WaylandCompositor::keyboardLayoutSwitching()
QTRY_COMPARE(mockKeyboard->m_lastKeyCode, 44u);
}
-#endif // QT_CONFIG(xkbcommon_evdev)
+#endif // QT_CONFIG(xkbcommon)
void tst_WaylandCompositor::keyboardGrab()
{
@@ -374,6 +376,28 @@ void tst_WaylandCompositor::modes()
QTRY_COMPARE(client.geometry, QRect(QPoint(0, 0), QSize(1920, 1080)));
}
+void tst_WaylandCompositor::comparingModes()
+{
+ QWaylandOutputMode mode1(QSize(800, 600), 120000);
+ QWaylandOutputMode mode2(QSize(1024, 768), 100000);
+ QWaylandOutputMode mode3(QSize(1024, 768), 120000);
+ QWaylandOutputMode mode4(QSize(800, 600), 100000);
+
+ QCOMPARE(mode1, mode1);
+ QCOMPARE(mode2, mode2);
+ QCOMPARE(mode3, mode3);
+ QCOMPARE(mode4, mode4);
+
+ for (auto mode: {mode2, mode3, mode4})
+ QVERIFY(mode1 != mode);
+ for (auto mode: {mode1, mode3, mode4})
+ QVERIFY(mode2 != mode);
+ for (auto mode: {mode1, mode2, mode4})
+ QVERIFY(mode3 != mode);
+ for (auto mode: {mode1, mode2, mode3})
+ QVERIFY(mode4 != mode);
+}
+
void tst_WaylandCompositor::sizeFollowsWindow()
{
TestCompositor compositor;
@@ -599,6 +623,32 @@ void tst_WaylandCompositor::removeOutput()
QTRY_COMPARE(client.m_outputs.size(), 1);
}
+class CustomSurface : public QWaylandSurface {
+ Q_OBJECT
+public:
+ explicit CustomSurface() = default;
+};
+
+void tst_WaylandCompositor::customSurface()
+{
+ TestCompositor compositor;
+ QObject::connect(&compositor, &TestCompositor::surfaceRequested, this, [&compositor] (QWaylandClient *client, uint id, int version) {
+ auto *s = new CustomSurface();
+ QCOMPARE(s->waylandClient(), nullptr);
+ s->initialize(&compositor, client, id, version);
+ QCOMPARE(s->waylandClient(), client->client());
+ });
+ QObject::connect(&compositor, &TestCompositor::surfaceCreated, this, [] (QWaylandSurface *surface) {
+ auto *custom = qobject_cast<CustomSurface *>(surface);
+ QVERIFY(custom != nullptr);
+ });
+ compositor.create();
+
+ MockClient client;
+ wl_surface *surface = client.createSurface();
+ QTRY_COMPARE(compositor.surfaces.size(), 1);
+}
+
void tst_WaylandCompositor::seatCapabilities()
{
TestCompositor compositor;