summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorErik Larsson <erik@ortogonal.com>2016-01-30 16:50:41 +0100
committerErik Larsson <erik@ortogonal.com>2016-03-21 12:53:45 +0000
commit178dc4df9c3f625b95413b597eaaad2216aec729 (patch)
tree720d2fbd2591c19416fc1fc4e5a90e10911cc274
parent35792cab1a4a6c414127867f86f4b19cfec20385 (diff)
Test: Make compositor tests runnable with new API
Fix compilation errors and make all compositor tests runnable with the new compositor API. Some input handling tests are reworked so they are able to function with the new compositor API. Also make sure client and cmake tests are built even if not compiled with a wayland-compositor. Change-Id: I0f03e2c04f2736860f770b6100ccfa3300ff8da4 Reviewed-by: Johan Helsing <johan.helsing@theqtcompany.com> Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
-rw-r--r--tests/auto/auto.pro5
-rw-r--r--tests/auto/cmake/CMakeLists.txt2
-rw-r--r--tests/auto/compositor/mockclient.cpp8
-rw-r--r--tests/auto/compositor/testcompositor.cpp32
-rw-r--r--tests/auto/compositor/testcompositor.h17
-rw-r--r--tests/auto/compositor/testinputdevice.cpp4
-rw-r--r--tests/auto/compositor/testinputdevice.h4
-rw-r--r--tests/auto/compositor/testkeyboardgrabber.cpp34
-rw-r--r--tests/auto/compositor/testkeyboardgrabber.h21
-rw-r--r--tests/auto/compositor/tst_compositor.cpp156
10 files changed, 147 insertions, 136 deletions
diff --git a/tests/auto/auto.pro b/tests/auto/auto.pro
index 822fdeb88..c503803b4 100644
--- a/tests/auto/auto.pro
+++ b/tests/auto/auto.pro
@@ -4,6 +4,7 @@ TEMPLATE=subdirs
#building QtCompositor
contains(CONFIG, wayland-compositor) {
SUBDIRS += compositor
- SUBDIRS += client
- SUBDIRS += cmake
}
+
+SUBDIRS += client
+SUBDIRS += cmake
diff --git a/tests/auto/cmake/CMakeLists.txt b/tests/auto/cmake/CMakeLists.txt
index 9041fff95..270d11aa6 100644
--- a/tests/auto/cmake/CMakeLists.txt
+++ b/tests/auto/cmake/CMakeLists.txt
@@ -11,7 +11,7 @@ set(Qt5_MODULE_TEST_DEPENDS Quick)
include("${_Qt5CTestMacros}")
test_module_includes(
- Compositor QWaylandBufferRef
+ WaylandCompositor QWaylandBufferRef
)
# Can't test in `test_module_includes`, WaylandClient has no public headers
diff --git a/tests/auto/compositor/mockclient.cpp b/tests/auto/compositor/mockclient.cpp
index fd7fedfe1..d4765b894 100644
--- a/tests/auto/compositor/mockclient.cpp
+++ b/tests/auto/compositor/mockclient.cpp
@@ -45,7 +45,7 @@ const struct wl_registry_listener MockClient::registryListener = {
};
MockClient::MockClient()
- : display(wl_display_connect(0))
+ : display(wl_display_connect("wayland-qt-test-0"))
, compositor(0)
, output(0)
, registry(0)
@@ -93,6 +93,8 @@ void MockClient::outputGeometryEvent(void *data, wl_output *,
int, const char *, const char *,
int32_t )
{
+ Q_UNUSED(width);
+ Q_UNUSED(height);
resolve(data)->geometry.moveTopLeft(QPoint(x, y));
}
@@ -125,6 +127,8 @@ void MockClient::flushDisplay()
void MockClient::handleGlobal(void *data, wl_registry *registry, uint32_t id, const char *interface, uint32_t version)
{
+ Q_UNUSED(registry);
+ Q_UNUSED(version);
resolve(data)->handleGlobal(id, QByteArray(interface));
}
@@ -186,7 +190,7 @@ ShmBuffer::ShmBuffer(const QSize &size, wl_shm *shm)
return;
}
- image = QImage(static_cast<uchar *>(data), size.width(), size.height(), stride, QImage::Format_ARGB32);
+ image = QImage(static_cast<uchar *>(data), size.width(), size.height(), stride, QImage::Format_ARGB32_Premultiplied);
shm_pool = wl_shm_create_pool(shm,fd,alloc);
handle = wl_shm_pool_create_buffer(shm_pool,0, size.width(), size.height(),
stride, WL_SHM_FORMAT_ARGB8888);
diff --git a/tests/auto/compositor/testcompositor.cpp b/tests/auto/compositor/testcompositor.cpp
index 897c6f813..b4b106815 100644
--- a/tests/auto/compositor/testcompositor.cpp
+++ b/tests/auto/compositor/testcompositor.cpp
@@ -27,21 +27,43 @@
****************************************************************************/
#include "testcompositor.h"
+#include "testinputdevice.h"
+#include "testkeyboardgrabber.h"
-TestCompositor::TestCompositor(QWaylandCompositor::ExtensionFlag flags) : QWaylandCompositor(0, flags)
+TestCompositor::TestCompositor(bool createInputDev)
+ : QWaylandCompositor()
+ , shell(new QWaylandShell(this))
+ , m_createInputDevice(createInputDev)
{
- createOutput(0, "", "");
- addDefaultShell();
}
-void TestCompositor::surfaceCreated(QWaylandSurface *surface)
+void TestCompositor::create()
+{
+ new QWaylandOutput(this, Q_NULLPTR);
+ QWaylandCompositor::create();
+
+ connect(this, &QWaylandCompositor::surfaceCreated, this, &TestCompositor::onSurfaceCreated);
+ connect(this, &QWaylandCompositor::surfaceAboutToBeDestroyed, this, &TestCompositor::onSurfaceAboutToBeDestroyed);
+}
+
+void TestCompositor::onSurfaceCreated(QWaylandSurface *surface)
{
surfaces << surface;
}
-void TestCompositor::surfaceAboutToBeDestroyed(QWaylandSurface *surface)
+void TestCompositor::onSurfaceAboutToBeDestroyed(QWaylandSurface *surface)
{
surfaces.removeOne(surface);
}
+QWaylandInputDevice *TestCompositor::createInputDevice()
+{
+ if (m_createInputDevice)
+ return new TestInputDevice(this, QWaylandInputDevice::Pointer | QWaylandInputDevice::Keyboard);
+ else
+ return QWaylandCompositor::createInputDevice();
+}
+QWaylandKeyboard *TestCompositor::createKeyboardDevice(QWaylandInputDevice *inputDevice) {
+ return new TestKeyboardGrabber(inputDevice);
+}
diff --git a/tests/auto/compositor/testcompositor.h b/tests/auto/compositor/testcompositor.h
index 2762c4529..affef7ec8 100644
--- a/tests/auto/compositor/testcompositor.h
+++ b/tests/auto/compositor/testcompositor.h
@@ -28,15 +28,26 @@
#include "qwaylandcompositor.h"
#include "qwaylandsurface.h"
+#include "qwaylandshell.h"
class TestCompositor : public QWaylandCompositor
{
+ Q_OBJECT
public:
- TestCompositor(QWaylandCompositor::ExtensionFlag flags = QWaylandCompositor::DefaultExtensions);
+ TestCompositor(bool createInputDev = false);
+ void create();
- void surfaceCreated(QWaylandSurface *surface);
- void surfaceAboutToBeDestroyed(QWaylandSurface *surface);
+public slots:
+ void onSurfaceCreated(QWaylandSurface *surface);
+ void onSurfaceAboutToBeDestroyed(QWaylandSurface *surface);
+protected:
+ QWaylandInputDevice *createInputDevice() Q_DECL_OVERRIDE;
+ QWaylandKeyboard *createKeyboardDevice(QWaylandInputDevice *inputDevice) Q_DECL_OVERRIDE;
+
+public:
QList<QWaylandSurface *> surfaces;
+ QWaylandShell* shell;
+ bool m_createInputDevice;
};
diff --git a/tests/auto/compositor/testinputdevice.cpp b/tests/auto/compositor/testinputdevice.cpp
index 706dfdfbe..5c02dff85 100644
--- a/tests/auto/compositor/testinputdevice.cpp
+++ b/tests/auto/compositor/testinputdevice.cpp
@@ -27,7 +27,6 @@
****************************************************************************/
#include "testinputdevice.h"
-
#include <QMouseEvent>
TestInputDevice::TestInputDevice(QWaylandCompositor *compositor, QWaylandInputDevice::CapabilityFlags caps)
@@ -40,7 +39,7 @@ TestInputDevice::~TestInputDevice()
{
}
-bool TestInputDevice::isOwner(QInputEvent *event)
+bool TestInputDevice::isOwner(QInputEvent *event) const
{
m_queryCount++;
QMouseEvent *me = dynamic_cast<QMouseEvent *>(event);
@@ -54,4 +53,3 @@ QList<QMouseEvent *> TestInputDevice::createMouseEvents(int count)
}
return m_events;
}
-
diff --git a/tests/auto/compositor/testinputdevice.h b/tests/auto/compositor/testinputdevice.h
index 7e2ab15c8..710fc82d1 100644
--- a/tests/auto/compositor/testinputdevice.h
+++ b/tests/auto/compositor/testinputdevice.h
@@ -40,13 +40,13 @@ public:
TestInputDevice(QWaylandCompositor *compositor, QWaylandInputDevice::CapabilityFlags caps);
~TestInputDevice();
- bool isOwner(QInputEvent *event);
+ bool isOwner(QInputEvent *inputEvent) const Q_DECL_OVERRIDE;
QList<QMouseEvent *> createMouseEvents(int count);
int queryCount() { return m_queryCount; }
private:
- int m_queryCount;
+ mutable int m_queryCount;
QList<QMouseEvent *> m_events;
};
diff --git a/tests/auto/compositor/testkeyboardgrabber.cpp b/tests/auto/compositor/testkeyboardgrabber.cpp
index aef2d7045..f252e2c8c 100644
--- a/tests/auto/compositor/testkeyboardgrabber.cpp
+++ b/tests/auto/compositor/testkeyboardgrabber.cpp
@@ -28,33 +28,31 @@
#include "testkeyboardgrabber.h"
-namespace QtWayland {
- KeyboardGrabber::~KeyboardGrabber() {}
+TestKeyboardGrabber::TestKeyboardGrabber(QWaylandInputDevice *inputDevice)
+ : QWaylandKeyboard(inputDevice)
+{
}
-void TestKeyboardGrabber::focused(QtWayland::Surface *surface)
+bool TestKeyboardGrabber::setFocus(QWaylandSurface *surface)
{
- Q_UNUSED(surface);
Q_EMIT focusedCalled();
+ return QWaylandKeyboard::setFocus(surface);
}
-void TestKeyboardGrabber::key(uint32_t serial, uint32_t time, uint32_t key, uint32_t state)
+void TestKeyboardGrabber::sendKeyPressEvent(uint code)
{
- Q_UNUSED(serial);
- Q_UNUSED(time);
- Q_UNUSED(key);
- Q_UNUSED(state);
- Q_EMIT keyCalled();
+ Q_EMIT keyPressCalled();
+ QWaylandKeyboard::sendKeyPressEvent(code);
}
-void TestKeyboardGrabber::modifiers(uint32_t serial, uint32_t mods_depressed,
- uint32_t mods_latched, uint32_t mods_locked, uint32_t group)
+void TestKeyboardGrabber::sendKeyReleaseEvent(uint code)
{
- Q_UNUSED(serial);
- Q_UNUSED(mods_depressed);
- Q_UNUSED(mods_latched);
- Q_UNUSED(mods_locked);
- Q_UNUSED(group);
- Q_EMIT modifiersCalled();
+ Q_EMIT keyReleaseCalled();
+ QWaylandKeyboard::sendKeyReleaseEvent(code);
}
+void TestKeyboardGrabber::sendKeyModifiers(QWaylandClient *client, uint32_t serial)
+{
+ Q_EMIT modifiersCalled();
+ QWaylandKeyboard::sendKeyModifiers(client, serial);
+}
diff --git a/tests/auto/compositor/testkeyboardgrabber.h b/tests/auto/compositor/testkeyboardgrabber.h
index a54c27ab8..350bacbdd 100644
--- a/tests/auto/compositor/testkeyboardgrabber.h
+++ b/tests/auto/compositor/testkeyboardgrabber.h
@@ -26,26 +26,23 @@
**
****************************************************************************/
-#include "QtCompositor/private/qwlkeyboard_p.h"
-#include "QtCompositor/private/qwlsurface_p.h"
+#include "qwaylandkeyboard.h"
-class TestKeyboardGrabber : public QObject, public QtWayland::KeyboardGrabber
+class TestKeyboardGrabber : public QWaylandKeyboard
{
Q_OBJECT
-
public:
+ TestKeyboardGrabber(QWaylandInputDevice *inputDevice);
- TestKeyboardGrabber() {}
- ~TestKeyboardGrabber() {}
-
- void focused(QtWayland::Surface *surface);
- void key(uint32_t serial, uint32_t time, uint32_t key, uint32_t state);
- void modifiers(uint32_t serial, uint32_t mods_depressed,
- uint32_t mods_latched, uint32_t mods_locked, uint32_t group);
+ bool setFocus(QWaylandSurface *surface) Q_DECL_OVERRIDE;
+ void sendKeyModifiers(QWaylandClient *client, uint32_t serial) Q_DECL_OVERRIDE;
+ void sendKeyPressEvent(uint code) Q_DECL_OVERRIDE;
+ void sendKeyReleaseEvent(uint code) Q_DECL_OVERRIDE;
signals:
void focusedCalled();
- void keyCalled();
+ void keyPressCalled();
+ void keyReleaseCalled();
void modifiersCalled();
};
diff --git a/tests/auto/compositor/tst_compositor.cpp b/tests/auto/compositor/tst_compositor.cpp
index c9eb95b9b..422e378dc 100644
--- a/tests/auto/compositor/tst_compositor.cpp
+++ b/tests/auto/compositor/tst_compositor.cpp
@@ -29,18 +29,14 @@
#include "mockclient.h"
#include "testcompositor.h"
#include "testkeyboardgrabber.h"
-
-#include "QtCompositor/private/qwlkeyboard_p.h"
-#include "QtCompositor/private/qwlinputdevice_p.h"
-#include "QtCompositor/private/qwlcompositor_p.h"
#include "testinputdevice.h"
+#include "qwaylandview.h"
#include "qwaylandbufferref.h"
+#include "qwaylandinput.h"
#include <QtTest/QtTest>
-#include <QtCompositor/private/qwlinputdevice_p.h>
-
class tst_WaylandCompositor : public QObject
{
Q_OBJECT
@@ -48,6 +44,7 @@ class tst_WaylandCompositor : public QObject
public:
tst_WaylandCompositor() {
setenv("XDG_RUNTIME_DIR", ".", 1);
+ setenv("WAYLAND_DISPLAY", "wayland-qt-test-0", 1);
}
private slots:
@@ -65,6 +62,7 @@ private slots:
void tst_WaylandCompositor::singleClient()
{
TestCompositor compositor;
+ compositor.create();
MockClient client;
@@ -95,6 +93,7 @@ void tst_WaylandCompositor::singleClient()
void tst_WaylandCompositor::multipleClients()
{
TestCompositor compositor;
+ compositor.create();
MockClient a;
MockClient b;
@@ -133,7 +132,8 @@ void tst_WaylandCompositor::multipleClients()
void tst_WaylandCompositor::keyboardGrab()
{
- TestCompositor compositor((QWaylandCompositor::ExtensionFlag)0);
+ TestCompositor compositor;
+ compositor.create();
MockClient mc;
mc.createSurface();
@@ -144,46 +144,47 @@ void tst_WaylandCompositor::keyboardGrab()
// Set the focused surface so that key event will flow through
QWaylandSurface *waylandSurface = compositor.surfaces.at(0);
QWaylandInputDevice* inputDevice = compositor.defaultInputDevice();
- inputDevice->handle()->keyboardDevice()->setFocus(waylandSurface->handle());
- TestKeyboardGrabber grab;
- QSignalSpy grabFocusSpy(&grab, SIGNAL(focusedCalled()));
- QSignalSpy grabKeySpy(&grab, SIGNAL(keyCalled()));
- QSignalSpy grabModifierSpy(&grab, SIGNAL(modifiersCalled()));
-
- QtWayland::Keyboard *keyboard = inputDevice->handle()->keyboardDevice();
- keyboard->startGrab(&grab);
+ TestKeyboardGrabber* grab = static_cast<TestKeyboardGrabber *>(inputDevice->keyboard());
+ QTRY_COMPARE(grab, inputDevice->keyboard());
+ QSignalSpy grabFocusSpy(grab, SIGNAL(focusedCalled()));
+ QSignalSpy grabKeyPressSpy(grab, SIGNAL(keyPressCalled()));
+ QSignalSpy grabKeyReleaseSpy(grab, SIGNAL(keyReleaseCalled()));
+ //QSignalSpy grabModifierSpy(grab, SIGNAL(modifiersCalled()));
+ inputDevice->setKeyboardFocus(waylandSurface);
QTRY_COMPARE(grabFocusSpy.count(), 1);
- QCOMPARE(grab.m_keyboard, inputDevice->handle()->keyboardDevice());
QKeyEvent ke(QEvent::KeyPress, Qt::Key_A, Qt::NoModifier, 30, 0, 0);
QKeyEvent ke1(QEvent::KeyRelease, Qt::Key_A, Qt::NoModifier, 30, 0, 0);
inputDevice->sendFullKeyEvent(&ke);
inputDevice->sendFullKeyEvent(&ke1);
- QTRY_COMPARE(grabKeySpy.count(), 2);
+ QTRY_COMPARE(grabKeyPressSpy.count(), 1);
+ QTRY_COMPARE(grabKeyReleaseSpy.count(), 1);
QKeyEvent ke2(QEvent::KeyPress, Qt::Key_Shift, Qt::NoModifier, 50, 0, 0);
QKeyEvent ke3(QEvent::KeyRelease, Qt::Key_Shift, Qt::NoModifier, 50, 0, 0);
inputDevice->sendFullKeyEvent(&ke2);
inputDevice->sendFullKeyEvent(&ke3);
- QTRY_COMPARE(grabModifierSpy.count(), 2);
+ //QTRY_COMPARE(grabModifierSpy.count(), 2);
// Modifiers are also keys
- QTRY_COMPARE(grabKeySpy.count(), 4);
+ QTRY_COMPARE(grabKeyPressSpy.count(), 2);
+ QTRY_COMPARE(grabKeyReleaseSpy.count(), 2);
// Stop grabbing
- keyboard->endGrab();
+ inputDevice->setKeyboardFocus(Q_NULLPTR);
inputDevice->sendFullKeyEvent(&ke);
inputDevice->sendFullKeyEvent(&ke1);
- QTRY_COMPARE(grabKeySpy.count(), 4);
+ QTRY_COMPARE(grabKeyPressSpy.count(), 2);
}
void tst_WaylandCompositor::geometry()
{
TestCompositor compositor;
+ compositor.create();
QRect geometry(0, 0, 4096, 3072);
- compositor.setOutputGeometry(geometry);
+ compositor.defaultOutput()->setGeometry(geometry);
MockClient client;
@@ -193,6 +194,7 @@ void tst_WaylandCompositor::geometry()
void tst_WaylandCompositor::mapSurface()
{
TestCompositor compositor;
+ compositor.create();
MockClient client;
@@ -201,10 +203,10 @@ void tst_WaylandCompositor::mapSurface()
QWaylandSurface *waylandSurface = compositor.surfaces.at(0);
- QSignalSpy mappedSpy(waylandSurface, SIGNAL(mapped()));
+ QSignalSpy mappedSpy(waylandSurface, SIGNAL(mappedChanged()));
QCOMPARE(waylandSurface->size(), QSize());
- QCOMPARE(waylandSurface->type(), QWaylandSurface::Invalid);
+ QCOMPARE(waylandSurface->isMapped(), false);
QSize size(256, 256);
ShmBuffer buffer(size, client.shm);
@@ -216,7 +218,7 @@ void tst_WaylandCompositor::mapSurface()
wl_surface_commit(surface);
QTRY_COMPARE(waylandSurface->size(), size);
- QTRY_COMPARE(waylandSurface->type(), QWaylandSurface::Shm);
+ QTRY_COMPARE(waylandSurface->isMapped(), true);
QTRY_COMPARE(mappedSpy.count(), 1);
wl_surface_destroy(surface);
@@ -239,20 +241,18 @@ static void registerFrameCallback(wl_surface *surface, int *counter)
void tst_WaylandCompositor::frameCallback()
{
- class BufferAttacher : public QWaylandBufferAttacher
+ class BufferView : public QWaylandView
{
public:
- void attach(const QWaylandBufferRef &ref) Q_DECL_OVERRIDE
+ void attach(const QWaylandBufferRef &ref, const QRegion &damage) Q_DECL_OVERRIDE
{
+ Q_UNUSED(damage);
bufferRef = ref;
}
- void unmap() Q_DECL_OVERRIDE
- {
- }
QImage image() const
{
- if (!bufferRef || !bufferRef.isShm())
+ if (bufferRef.isNull() || !bufferRef.isShm())
return QImage();
return bufferRef.image();
}
@@ -261,6 +261,7 @@ void tst_WaylandCompositor::frameCallback()
};
TestCompositor compositor;
+ compositor.create();
MockClient client;
@@ -270,8 +271,10 @@ void tst_WaylandCompositor::frameCallback()
QTRY_COMPARE(compositor.surfaces.size(), 1);
QWaylandSurface *waylandSurface = compositor.surfaces.at(0);
- BufferAttacher attacher;
- waylandSurface->setBufferAttacher(&attacher);
+ BufferView* view = new BufferView;
+ view->setSurface(waylandSurface);
+ view->setOutput(compositor.defaultOutput());
+
QSignalSpy damagedSpy(waylandSurface, SIGNAL(damaged(const QRegion &)));
for (int i = 0; i < 10; ++i) {
@@ -284,12 +287,12 @@ void tst_WaylandCompositor::frameCallback()
wl_surface_damage(surface, 0, 0, size.width(), size.height());
wl_surface_commit(surface);
- QTRY_COMPARE(waylandSurface->type(), QWaylandSurface::Shm);
+ QTRY_COMPARE(waylandSurface->isMapped(), true);
QTRY_COMPARE(damagedSpy.count(), i + 1);
- QCOMPARE(static_cast<BufferAttacher *>(waylandSurface->bufferAttacher())->image(), buffer.image);
- compositor.frameStarted();
- compositor.sendFrameCallbacks(QList<QWaylandSurface *>() << waylandSurface);
+ QCOMPARE(static_cast<BufferView*>(waylandSurface->views().first())->image(), buffer.image);
+ compositor.defaultOutput()->frameStarted();
+ compositor.defaultOutput()->sendFrameCallbacks();
QTRY_COMPARE(frameCounter, i + 1);
}
@@ -300,64 +303,51 @@ void tst_WaylandCompositor::frameCallback()
void tst_WaylandCompositor::inputDeviceCapabilities()
{
TestCompositor compositor;
- QtWayland::InputDevice dev(NULL, compositor.handle(), QWaylandInputDevice::Pointer);
+ compositor.create();
+
+ MockClient client;
+ Q_UNUSED(client);
- QTRY_VERIFY(dev.pointerDevice());
- QTRY_VERIFY(!dev.keyboardDevice());
- QTRY_VERIFY(!dev.touchDevice());
+ QWaylandInputDevice dev(&compositor, QWaylandInputDevice::Pointer);
- dev.setCapabilities(QWaylandInputDevice::Keyboard | QWaylandInputDevice::Touch);
- QTRY_VERIFY(!dev.pointerDevice());
- QTRY_VERIFY(dev.keyboardDevice());
- QTRY_VERIFY(dev.touchDevice());
+ QTRY_VERIFY(dev.pointer());
+ QTRY_VERIFY(!dev.keyboard());
+ QTRY_VERIFY(!dev.touch());
- // Test that existing devices do not change when another is removed
- QtWayland::Keyboard *k = dev.keyboardDevice();
- dev.setCapabilities(QWaylandInputDevice::Keyboard);
- QTRY_COMPARE(k, dev.keyboardDevice());
+ QWaylandInputDevice dev2(&compositor, QWaylandInputDevice::Keyboard | QWaylandInputDevice::Touch);
+ QTRY_VERIFY(!dev2.pointer());
+ QTRY_VERIFY(dev2.keyboard());
+ QTRY_VERIFY(dev2.touch());
}
void tst_WaylandCompositor::inputDeviceCreation()
{
- TestCompositor compositor;
- TestInputDevice dev1(&compositor, QWaylandInputDevice::Pointer | QWaylandInputDevice::Keyboard);
- TestInputDevice dev2(&compositor, QWaylandInputDevice::Pointer | QWaylandInputDevice::Keyboard);
+ TestCompositor compositor(true);
+ compositor.create();
+
+ MockClient client;
+ Q_UNUSED(client);
- compositor.handle()->registerInputDevice(&dev1);
- compositor.handle()->registerInputDevice(&dev2);
+ TestInputDevice* dev = static_cast<TestInputDevice*>(compositor.defaultInputDevice());
// The compositor will create the default input device
- QTRY_COMPARE(compositor.handle()->inputDevices().count(), 3);
- // Test the order
- QTRY_COMPARE(compositor.handle()->inputDevices().at(0), &dev2);
- QTRY_COMPARE(compositor.handle()->inputDevices().at(1), &dev1);
- QTRY_COMPARE(compositor.handle()->inputDevices().at(2), compositor.defaultInputDevice());
+ QTRY_COMPARE(compositor.defaultInputDevice(), dev);
QList<QMouseEvent *> allEvents;
- allEvents += dev1.createMouseEvents(2);
- allEvents += dev2.createMouseEvents(5);
+ allEvents += dev->createMouseEvents(5);
foreach (QMouseEvent *me, allEvents) {
compositor.inputDeviceFor(me);
}
- // The first input device will only get called exatly the number of times it has created
+ // The default input device will get called exatly the number of times it has created
// the events
- QTRY_COMPARE(dev1.queryCount(), 2);
- // The second will get called the total number of times as it sits as the first item in
- // the registered input devices list
- QTRY_COMPARE(dev2.queryCount(), 7);
+ QTRY_COMPARE(dev->queryCount(), 5);
}
void tst_WaylandCompositor::inputDeviceKeyboardFocus()
{
- TestCompositor compositor;
-
-
- TestInputDevice dev1(&compositor, QWaylandInputDevice::Keyboard);
- TestInputDevice dev2(&compositor, QWaylandInputDevice::Keyboard);
-
- compositor.handle()->registerInputDevice(&dev1);
- compositor.handle()->registerInputDevice(&dev2);
+ TestCompositor compositor(true);
+ compositor.create();
// Create client after all the input devices have been set up as the mock client
// does not dynamically listen to new seats
@@ -366,24 +356,14 @@ void tst_WaylandCompositor::inputDeviceKeyboardFocus()
QTRY_COMPARE(compositor.surfaces.size(), 1);
QWaylandSurface *waylandSurface = compositor.surfaces.at(0);
- QList<QWaylandInputDevice *> devices = compositor.handle()->inputDevices();
- foreach (QWaylandInputDevice *dev, devices) {
- dev->setKeyboardFocus(waylandSurface);
- }
+ QWaylandInputDevice* dev = compositor.defaultInputDevice();
+ dev->setKeyboardFocus(waylandSurface);
QTRY_COMPARE(compositor.defaultInputDevice()->keyboardFocus(), waylandSurface);
- QTRY_COMPARE(dev1.keyboardFocus(), waylandSurface);
- QTRY_COMPARE(dev2.keyboardFocus(), waylandSurface);
wl_surface_destroy(surface);
QTRY_VERIFY(compositor.surfaces.size() == 0);
- // This will normally be called for example in the quick compositor
- // but here call it manually to get rid of the surface and have it reset
- // the focus
- compositor.handle()->cleanupGraphicsResources();
-
- QTRY_VERIFY(!compositor.defaultInputDevice()->keyboardFocus());
- QTRY_VERIFY(!dev1.keyboardFocus());
- QTRY_VERIFY(!dev2.keyboardFocus());
+
+ QTRY_VERIFY(!compositor.defaultInputDevice()->keyboardFocus());
}
#include <tst_compositor.moc>