diff options
author | Pier Luigi Fiorini <pierluigi.fiorini@gmail.com> | 2015-11-25 19:41:14 +0100 |
---|---|---|
committer | Pier Luigi Fiorini <pierluigi.fiorini@gmail.com> | 2015-11-28 16:48:49 +0000 |
commit | 68993c012b88df43b2cd75a8c8704092760f28c0 (patch) | |
tree | 3d5b97c0960472df2cd0e8aa8d224203ceb7679b /src/compositor/compositor_api | |
parent | 02fa8b9ef89b6874effea8d219bcbba0319a263c (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/compositor_api')
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; |