summaryrefslogtreecommitdiffstats
path: root/src/compositor
diff options
context:
space:
mode:
authorPier Luigi Fiorini <pierluigi.fiorini@gmail.com>2015-11-25 19:41:14 +0100
committerPier Luigi Fiorini <pierluigi.fiorini@gmail.com>2015-11-28 16:48:49 +0000
commit68993c012b88df43b2cd75a8c8704092760f28c0 (patch)
tree3d5b97c0960472df2cd0e8aa8d224203ceb7679b /src/compositor
parent02fa8b9ef89b6874effea8d219bcbba0319a263c (diff)
Add clients with the correct version
Wayland clients might implement an older interface version, in that case we don't want to send unsupported requests. To ensure that we pick the lower version between the one asked by the client and the one we actually implement on the server. Change-Id: I4865780505db171295897fc7f6567c6f88e598fa Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
Diffstat (limited to 'src/compositor')
-rw-r--r--src/compositor/compositor_api/qwaylandinput.cpp6
-rw-r--r--src/compositor/compositor_api/qwaylandkeyboard.cpp4
-rw-r--r--src/compositor/compositor_api/qwaylandkeyboard.h2
-rw-r--r--src/compositor/compositor_api/qwaylandpointer.cpp4
-rw-r--r--src/compositor/compositor_api/qwaylandpointer.h2
-rw-r--r--src/compositor/compositor_api/qwaylandtouch.cpp4
-rw-r--r--src/compositor/compositor_api/qwaylandtouch.h2
7 files changed, 12 insertions, 12 deletions
diff --git a/src/compositor/compositor_api/qwaylandinput.cpp b/src/compositor/compositor_api/qwaylandinput.cpp
index 6cb476d88..be566c70d 100644
--- a/src/compositor/compositor_api/qwaylandinput.cpp
+++ b/src/compositor/compositor_api/qwaylandinput.cpp
@@ -114,21 +114,21 @@ void QWaylandInputDevicePrivate::seat_bind_resource(wl_seat::Resource *resource)
void QWaylandInputDevicePrivate::seat_get_pointer(wl_seat::Resource *resource, uint32_t id)
{
if (!pointer.isNull()) {
- pointer->addClient(QWaylandClient::fromWlClient(compositor, resource->client()), id);
+ pointer->addClient(QWaylandClient::fromWlClient(compositor, resource->client()), id, resource->version());
}
}
void QWaylandInputDevicePrivate::seat_get_keyboard(wl_seat::Resource *resource, uint32_t id)
{
if (!keyboard.isNull()) {
- keyboard->addClient(QWaylandClient::fromWlClient(compositor, resource->client()), id);
+ keyboard->addClient(QWaylandClient::fromWlClient(compositor, resource->client()), id, resource->version());
}
}
void QWaylandInputDevicePrivate::seat_get_touch(wl_seat::Resource *resource, uint32_t id)
{
if (!touch.isNull()) {
- touch->addClient(QWaylandClient::fromWlClient(compositor, resource->client()), id);
+ touch->addClient(QWaylandClient::fromWlClient(compositor, resource->client()), id, resource->version());
}
}
diff --git a/src/compositor/compositor_api/qwaylandkeyboard.cpp b/src/compositor/compositor_api/qwaylandkeyboard.cpp
index 76e9a39a6..f39bb3e04 100644
--- a/src/compositor/compositor_api/qwaylandkeyboard.cpp
+++ b/src/compositor/compositor_api/qwaylandkeyboard.cpp
@@ -557,10 +557,10 @@ void QWaylandKeyboard::setKeymap(const QWaylandKeymap &keymap)
/*!
* \internal
*/
-void QWaylandKeyboard::addClient(QWaylandClient *client, uint32_t id)
+void QWaylandKeyboard::addClient(QWaylandClient *client, uint32_t id, uint32_t version)
{
Q_D(QWaylandKeyboard);
- d->add(client->client(), id, QtWaylandServer::wl_keyboard::interfaceVersion());
+ d->add(client->client(), id, qMin<uint32_t>(QtWaylandServer::wl_keyboard::interfaceVersion(), version));
}
QT_END_NAMESPACE
diff --git a/src/compositor/compositor_api/qwaylandkeyboard.h b/src/compositor/compositor_api/qwaylandkeyboard.h
index 9ec67a711..3b2282ae7 100644
--- a/src/compositor/compositor_api/qwaylandkeyboard.h
+++ b/src/compositor/compositor_api/qwaylandkeyboard.h
@@ -97,7 +97,7 @@ public:
QWaylandSurface *focus() const;
QWaylandClient *focusClient() const;
- virtual void addClient(QWaylandClient *client, uint32_t id);
+ virtual void addClient(QWaylandClient *client, uint32_t id, uint32_t version);
Q_SIGNALS:
void focusChanged(QWaylandSurface *surface);
diff --git a/src/compositor/compositor_api/qwaylandpointer.cpp b/src/compositor/compositor_api/qwaylandpointer.cpp
index f0e2ee8ea..51b1f791d 100644
--- a/src/compositor/compositor_api/qwaylandpointer.cpp
+++ b/src/compositor/compositor_api/qwaylandpointer.cpp
@@ -273,10 +273,10 @@ bool QWaylandPointer::isButtonPressed() const
/*!
* \internal
*/
-void QWaylandPointer::addClient(QWaylandClient *client, uint32_t id)
+void QWaylandPointer::addClient(QWaylandClient *client, uint32_t id, uint32_t version)
{
Q_D(QWaylandPointer);
- d->add(client->client(), id, QtWaylandServer::wl_pointer::interfaceVersion());
+ d->add(client->client(), id, qMin<uint32_t>(QtWaylandServer::wl_pointer::interfaceVersion(), version));
}
/*!
diff --git a/src/compositor/compositor_api/qwaylandpointer.h b/src/compositor/compositor_api/qwaylandpointer.h
index 3bffde8f8..78e2b527e 100644
--- a/src/compositor/compositor_api/qwaylandpointer.h
+++ b/src/compositor/compositor_api/qwaylandpointer.h
@@ -73,7 +73,7 @@ public:
bool isButtonPressed() const;
- virtual void addClient(QWaylandClient *client, uint32_t id);
+ virtual void addClient(QWaylandClient *client, uint32_t id, uint32_t version);
struct wl_resource *focusResource() const;
diff --git a/src/compositor/compositor_api/qwaylandtouch.cpp b/src/compositor/compositor_api/qwaylandtouch.cpp
index b2a0c6ef0..743730254 100644
--- a/src/compositor/compositor_api/qwaylandtouch.cpp
+++ b/src/compositor/compositor_api/qwaylandtouch.cpp
@@ -221,10 +221,10 @@ void QWaylandTouch::sendFullTouchEvent(QTouchEvent *event)
/*!
* \internal
*/
-void QWaylandTouch::addClient(QWaylandClient *client, uint32_t id)
+void QWaylandTouch::addClient(QWaylandClient *client, uint32_t id, uint32_t version)
{
Q_D(QWaylandTouch);
- d->add(client->client(), id, 3);
+ d->add(client->client(), id, qMin<uint32_t>(QtWaylandServer::wl_touch::interfaceVersion(), version));
}
/*!
diff --git a/src/compositor/compositor_api/qwaylandtouch.h b/src/compositor/compositor_api/qwaylandtouch.h
index 0e1f9a530..aa9ee34cb 100644
--- a/src/compositor/compositor_api/qwaylandtouch.h
+++ b/src/compositor/compositor_api/qwaylandtouch.h
@@ -66,7 +66,7 @@ public:
virtual void sendFullTouchEvent(QTouchEvent *event);
- virtual void addClient(QWaylandClient *client, uint32_t id);
+ virtual void addClient(QWaylandClient *client, uint32_t id, uint32_t version);
struct wl_resource *focusResource() const;