summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGiulio Camuffo <giulio.camuffo@jollamobile.com>2014-09-30 17:09:49 +0300
committerGiulio Camuffo <giulio.camuffo@jollamobile.com>2014-10-09 09:40:10 +0200
commitbbd4a8f85b2e0ddaa94458569b8b5aa4128c52b1 (patch)
tree4649a8df94b875073245d1487b23b8ad48a12a57
parent090a39558d99115698e34d61a8d914da4a0637bd (diff)
Fix the compositor's wayland versioning
We cannot just assume all clients implement the same version of the various interfaces as the compositor does. Keep track of them, and react accordingly when creating a resource or sending an event. Change-Id: I9792433a14d49c5c4df0c892fc1349ce0dfb0d43 Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
-rw-r--r--examples/server-buffer/compositor/main.cpp2
-rw-r--r--src/compositor/compositor_api/qwaylandquickcompositor.cpp2
-rw-r--r--src/compositor/compositor_api/qwaylandquicksurface.cpp8
-rw-r--r--src/compositor/compositor_api/qwaylandquicksurface.h2
-rw-r--r--src/compositor/compositor_api/qwaylandsurface.cpp8
-rw-r--r--src/compositor/compositor_api/qwaylandsurface.h2
-rw-r--r--src/compositor/compositor_api/qwaylandsurface_p.h2
-rw-r--r--src/compositor/hardware_integration/qwlhwintegration.cpp2
-rw-r--r--src/compositor/wayland_wrapper/qwlcompositor.cpp6
-rw-r--r--src/compositor/wayland_wrapper/qwldatadevicemanager.cpp2
-rw-r--r--src/compositor/wayland_wrapper/qwldataoffer.cpp2
-rw-r--r--src/compositor/wayland_wrapper/qwldatasource.cpp2
-rw-r--r--src/compositor/wayland_wrapper/qwlextendedoutput.cpp4
-rw-r--r--src/compositor/wayland_wrapper/qwlextendedsurface.cpp8
-rw-r--r--src/compositor/wayland_wrapper/qwlextendedsurface_p.h2
-rw-r--r--src/compositor/wayland_wrapper/qwlinputdevice.cpp10
-rw-r--r--src/compositor/wayland_wrapper/qwlinputmethod.cpp2
-rw-r--r--src/compositor/wayland_wrapper/qwlinputmethodcontext.cpp2
-rw-r--r--src/compositor/wayland_wrapper/qwlinputpanel.cpp2
-rw-r--r--src/compositor/wayland_wrapper/qwlinputpanelsurface.cpp2
-rw-r--r--src/compositor/wayland_wrapper/qwloutput.cpp13
-rw-r--r--src/compositor/wayland_wrapper/qwlqtkey.cpp2
-rw-r--r--src/compositor/wayland_wrapper/qwlqttouch.cpp2
-rw-r--r--src/compositor/wayland_wrapper/qwlregion.cpp2
-rw-r--r--src/compositor/wayland_wrapper/qwlshellsurface.cpp5
-rw-r--r--src/compositor/wayland_wrapper/qwlsurface.cpp4
-rw-r--r--src/compositor/wayland_wrapper/qwlsurface_p.h2
-rw-r--r--src/compositor/wayland_wrapper/qwltextinput.cpp2
-rw-r--r--src/compositor/wayland_wrapper/qwltextinputmanager.cpp2
-rw-r--r--src/compositor/windowmanagerprotocol/waylandwindowmanagerintegration.cpp2
-rw-r--r--src/hardwareintegration/compositor/brcm-egl/brcmbuffer.cpp2
-rw-r--r--src/hardwareintegration/compositor/brcm-egl/brcmeglintegration.cpp2
-rw-r--r--src/hardwareintegration/compositor/drm-egl-server/drmeglserverbufferintegration.cpp4
-rw-r--r--src/hardwareintegration/compositor/libhybris-egl-server/libhybriseglserverbufferintegration.cpp4
-rw-r--r--src/hardwareintegration/compositor/xcomposite_share/xcompositebuffer.cpp2
-rw-r--r--src/hardwareintegration/compositor/xcomposite_share/xcompositehandler.cpp2
-rw-r--r--src/qtwaylandscanner/qtwaylandscanner.cpp51
-rw-r--r--tests/auto/client/mockcompositor.cpp2
-rw-r--r--tests/auto/client/mockinput.cpp10
-rw-r--r--tests/auto/client/mocksurface.cpp4
-rw-r--r--tests/auto/client/mocksurface.h2
41 files changed, 100 insertions, 93 deletions
diff --git a/examples/server-buffer/compositor/main.cpp b/examples/server-buffer/compositor/main.cpp
index 85503c62b..9f86539fd 100644
--- a/examples/server-buffer/compositor/main.cpp
+++ b/examples/server-buffer/compositor/main.cpp
@@ -71,7 +71,7 @@ class QmlCompositor
public:
QmlCompositor()
: QWaylandQuickCompositor(this, 0, DefaultExtensions | SubSurfaceExtension)
- , QtWaylandServer::qt_share_buffer(QWaylandCompositor::handle()->wl_display())
+ , QtWaylandServer::qt_share_buffer(QWaylandCompositor::handle()->wl_display(), 1)
, m_server_buffer_32_bit(0)
, m_server_buffer_item_32_bit(0)
, m_server_buffer_8_bit(0)
diff --git a/src/compositor/compositor_api/qwaylandquickcompositor.cpp b/src/compositor/compositor_api/qwaylandquickcompositor.cpp
index 8b3467c98..ae472f219 100644
--- a/src/compositor/compositor_api/qwaylandquickcompositor.cpp
+++ b/src/compositor/compositor_api/qwaylandquickcompositor.cpp
@@ -60,7 +60,7 @@ public:
void compositor_create_surface(Resource *resource, uint32_t id) Q_DECL_OVERRIDE
{
- QWaylandQuickSurface *surface = new QWaylandQuickSurface(resource->client(), id, static_cast<QWaylandQuickCompositor *>(m_qt_compositor));
+ QWaylandQuickSurface *surface = new QWaylandQuickSurface(resource->client(), id, wl_resource_get_version(resource->handle), static_cast<QWaylandQuickCompositor *>(m_qt_compositor));
m_surfaces << surface->handle();
//BUG: This may not be an on-screen window surface though
m_qt_compositor->surfaceCreated(surface);
diff --git a/src/compositor/compositor_api/qwaylandquicksurface.cpp b/src/compositor/compositor_api/qwaylandquicksurface.cpp
index 1ce229d21..ae3dfbb5d 100644
--- a/src/compositor/compositor_api/qwaylandquicksurface.cpp
+++ b/src/compositor/compositor_api/qwaylandquicksurface.cpp
@@ -124,8 +124,8 @@ public:
class QWaylandQuickSurfacePrivate : public QWaylandSurfacePrivate
{
public:
- QWaylandQuickSurfacePrivate(wl_client *client, quint32 id, QWaylandQuickCompositor *c, QWaylandQuickSurface *surf)
- : QWaylandSurfacePrivate(client, id, c, surf)
+ QWaylandQuickSurfacePrivate(wl_client *client, quint32 id, int version, QWaylandQuickCompositor *c, QWaylandQuickSurface *surf)
+ : QWaylandSurfacePrivate(client, id, version, c, surf)
, buffer(new BufferAttacher)
, compositor(c)
, useTextureAlpha(true)
@@ -158,8 +158,8 @@ public:
bool clientRenderingEnabled;
};
-QWaylandQuickSurface::QWaylandQuickSurface(wl_client *client, quint32 id, QWaylandQuickCompositor *compositor)
- : QWaylandSurface(new QWaylandQuickSurfacePrivate(client, id, compositor, this))
+QWaylandQuickSurface::QWaylandQuickSurface(wl_client *client, quint32 id, int version, QWaylandQuickCompositor *compositor)
+ : QWaylandSurface(new QWaylandQuickSurfacePrivate(client, id, version, compositor, this))
{
Q_D(QWaylandQuickSurface);
d->buffer->surface = this;
diff --git a/src/compositor/compositor_api/qwaylandquicksurface.h b/src/compositor/compositor_api/qwaylandquicksurface.h
index 63a25b3de..d65a98273 100644
--- a/src/compositor/compositor_api/qwaylandquicksurface.h
+++ b/src/compositor/compositor_api/qwaylandquicksurface.h
@@ -62,7 +62,7 @@ class Q_COMPOSITOR_EXPORT QWaylandQuickSurface : public QWaylandSurface
Q_PROPERTY(bool clientRenderingEnabled READ clientRenderingEnabled WRITE setClientRenderingEnabled NOTIFY clientRenderingEnabledChanged)
Q_PROPERTY(QObject *windowProperties READ windowPropertyMap CONSTANT)
public:
- QWaylandQuickSurface(wl_client *client, quint32 id, QWaylandQuickCompositor *compositor);
+ QWaylandQuickSurface(wl_client *client, quint32 id, int version, QWaylandQuickCompositor *compositor);
~QWaylandQuickSurface();
QSGTexture *texture() const;
diff --git a/src/compositor/compositor_api/qwaylandsurface.cpp b/src/compositor/compositor_api/qwaylandsurface.cpp
index 4badc0302..a4f4e1fdd 100644
--- a/src/compositor/compositor_api/qwaylandsurface.cpp
+++ b/src/compositor/compositor_api/qwaylandsurface.cpp
@@ -61,8 +61,8 @@
QT_BEGIN_NAMESPACE
-QWaylandSurfacePrivate::QWaylandSurfacePrivate(wl_client *client, quint32 id, QWaylandCompositor *compositor, QWaylandSurface *surface)
- : QtWayland::Surface(client, id, compositor, surface)
+QWaylandSurfacePrivate::QWaylandSurfacePrivate(wl_client *client, quint32 id, int version, QWaylandCompositor *compositor, QWaylandSurface *surface)
+ : QtWayland::Surface(client, id, version, compositor, surface)
, closing(false)
, refCount(1)
, windowType(QWaylandSurface::WindowType::None)
@@ -70,8 +70,8 @@ QWaylandSurfacePrivate::QWaylandSurfacePrivate(wl_client *client, quint32 id, QW
-QWaylandSurface::QWaylandSurface(wl_client *client, quint32 id, QWaylandCompositor *compositor)
- : QObject(*new QWaylandSurfacePrivate(client, id, compositor, this))
+QWaylandSurface::QWaylandSurface(wl_client *client, quint32 id, int version, QWaylandCompositor *compositor)
+ : QObject(*new QWaylandSurfacePrivate(client, id, version, compositor, this))
{
}
diff --git a/src/compositor/compositor_api/qwaylandsurface.h b/src/compositor/compositor_api/qwaylandsurface.h
index cc92af4e6..77e871365 100644
--- a/src/compositor/compositor_api/qwaylandsurface.h
+++ b/src/compositor/compositor_api/qwaylandsurface.h
@@ -117,7 +117,7 @@ public:
Texture
};
- QWaylandSurface(wl_client *client, quint32 id, QWaylandCompositor *compositor);
+ QWaylandSurface(wl_client *client, quint32 id, int version, QWaylandCompositor *compositor);
virtual ~QWaylandSurface();
WaylandClient *client() const;
diff --git a/src/compositor/compositor_api/qwaylandsurface_p.h b/src/compositor/compositor_api/qwaylandsurface_p.h
index 07541d32f..5e2188883 100644
--- a/src/compositor/compositor_api/qwaylandsurface_p.h
+++ b/src/compositor/compositor_api/qwaylandsurface_p.h
@@ -58,7 +58,7 @@ class Q_COMPOSITOR_EXPORT QWaylandSurfacePrivate : public QObjectPrivate, public
{
Q_DECLARE_PUBLIC(QWaylandSurface)
public:
- QWaylandSurfacePrivate(wl_client *client, quint32 id, QWaylandCompositor *compositor, QWaylandSurface *surface);
+ QWaylandSurfacePrivate(wl_client *client, quint32 id, int version, QWaylandCompositor *compositor, QWaylandSurface *surface);
void setType(QWaylandSurface::WindowType type);
void setTitle(const QString &title);
void setClassName(const QString &className);
diff --git a/src/compositor/hardware_integration/qwlhwintegration.cpp b/src/compositor/hardware_integration/qwlhwintegration.cpp
index 62614c4d4..e71bb652b 100644
--- a/src/compositor/hardware_integration/qwlhwintegration.cpp
+++ b/src/compositor/hardware_integration/qwlhwintegration.cpp
@@ -47,7 +47,7 @@ QT_BEGIN_NAMESPACE
namespace QtWayland {
HardwareIntegration::HardwareIntegration(Compositor *compositor)
- : qt_hardware_integration(compositor->wl_display())
+ : qt_hardware_integration(compositor->wl_display(), 1)
{
}
void HardwareIntegration::setClientBufferIntegration(const QString &name)
diff --git a/src/compositor/wayland_wrapper/qwlcompositor.cpp b/src/compositor/wayland_wrapper/qwlcompositor.cpp
index 404fa9d0f..faf32dc57 100644
--- a/src/compositor/wayland_wrapper/qwlcompositor.cpp
+++ b/src/compositor/wayland_wrapper/qwlcompositor.cpp
@@ -139,7 +139,7 @@ void Compositor::init()
if (socketArg != -1 && socketArg + 1 < arguments.size())
m_socket_name = arguments.at(socketArg + 1).toLocal8Bit();
- wl_compositor::init(m_display->handle());
+ wl_compositor::init(m_display->handle(), 3);
m_data_device_manager = new DataDeviceManager(this);
@@ -229,7 +229,7 @@ void Compositor::cleanupGraphicsResources()
void Compositor::compositor_create_surface(Resource *resource, uint32_t id)
{
- QWaylandSurface *surface = new QWaylandSurface(resource->client(), id, m_qt_compositor);
+ QWaylandSurface *surface = new QWaylandSurface(resource->client(), id, resource->version(), m_qt_compositor);
m_surfaces << surface->handle();
//BUG: This may not be an on-screen window surface though
m_qt_compositor->surfaceCreated(surface);
@@ -457,7 +457,7 @@ void Compositor::sendDragEndEvent()
void Compositor::bindGlobal(wl_client *client, void *data, uint32_t version, uint32_t id)
{
QWaylandGlobalInterface *iface = static_cast<QWaylandGlobalInterface *>(data);
- iface->bind(client, version, id);
+ iface->bind(client, qMin(iface->version(), version), id);
};
void Compositor::loadClientBufferIntegration()
diff --git a/src/compositor/wayland_wrapper/qwldatadevicemanager.cpp b/src/compositor/wayland_wrapper/qwldatadevicemanager.cpp
index 2c59f1b52..ab4c3fec0 100644
--- a/src/compositor/wayland_wrapper/qwldatadevicemanager.cpp
+++ b/src/compositor/wayland_wrapper/qwldatadevicemanager.cpp
@@ -60,7 +60,7 @@ namespace QtWayland {
DataDeviceManager::DataDeviceManager(Compositor *compositor)
: QObject(0)
- , wl_data_device_manager(compositor->wl_display())
+ , wl_data_device_manager(compositor->wl_display(), 1)
, m_compositor(compositor)
, m_current_selection_source(0)
, m_retainedReadNotifier(0)
diff --git a/src/compositor/wayland_wrapper/qwldataoffer.cpp b/src/compositor/wayland_wrapper/qwldataoffer.cpp
index 312e53858..02da4ec92 100644
--- a/src/compositor/wayland_wrapper/qwldataoffer.cpp
+++ b/src/compositor/wayland_wrapper/qwldataoffer.cpp
@@ -51,7 +51,7 @@ namespace QtWayland
{
DataOffer::DataOffer(DataSource *dataSource, QtWaylandServer::wl_data_device::Resource *target)
- : QtWaylandServer::wl_data_offer(target->client(), 0)
+ : QtWaylandServer::wl_data_offer(target->client(), 0, 1)
, m_dataSource(dataSource)
{
// FIXME: connect to dataSource and reset m_dataSource on destroy
diff --git a/src/compositor/wayland_wrapper/qwldatasource.cpp b/src/compositor/wayland_wrapper/qwldatasource.cpp
index 679693c32..21e622703 100644
--- a/src/compositor/wayland_wrapper/qwldatasource.cpp
+++ b/src/compositor/wayland_wrapper/qwldatasource.cpp
@@ -52,7 +52,7 @@ QT_BEGIN_NAMESPACE
namespace QtWayland {
DataSource::DataSource(struct wl_client *client, uint32_t id, uint32_t time)
- : QtWaylandServer::wl_data_source(client, id)
+ : QtWaylandServer::wl_data_source(client, id, 1)
, m_time(time)
, m_device(0)
, m_manager(0)
diff --git a/src/compositor/wayland_wrapper/qwlextendedoutput.cpp b/src/compositor/wayland_wrapper/qwlextendedoutput.cpp
index 3517a99d3..8bf69ff41 100644
--- a/src/compositor/wayland_wrapper/qwlextendedoutput.cpp
+++ b/src/compositor/wayland_wrapper/qwlextendedoutput.cpp
@@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE
namespace QtWayland {
OutputExtensionGlobal::OutputExtensionGlobal(Compositor *compositor)
- : QtWaylandServer::qt_output_extension(compositor->wl_display())
+ : QtWaylandServer::qt_output_extension(compositor->wl_display(), 1)
, m_compositor(compositor)
{
}
@@ -59,7 +59,7 @@ void OutputExtensionGlobal::output_extension_get_extended_output(qt_output_exten
Output *output = static_cast<Output *>(OutputGlobal::Resource::fromResource(output_resource));
Q_ASSERT(output->extendedOutput == 0);
- ExtendedOutput *extendedOutput = static_cast<ExtendedOutput *>(qt_extended_output::add(resource->client(), id));
+ ExtendedOutput *extendedOutput = static_cast<ExtendedOutput *>(qt_extended_output::add(resource->client(), id, resource->version()));
Q_ASSERT(!output->extendedOutput);
output->extendedOutput = extendedOutput;
diff --git a/src/compositor/wayland_wrapper/qwlextendedsurface.cpp b/src/compositor/wayland_wrapper/qwlextendedsurface.cpp
index a2ee34e36..ee68ed196 100644
--- a/src/compositor/wayland_wrapper/qwlextendedsurface.cpp
+++ b/src/compositor/wayland_wrapper/qwlextendedsurface.cpp
@@ -48,7 +48,7 @@ QT_BEGIN_NAMESPACE
namespace QtWayland {
SurfaceExtensionGlobal::SurfaceExtensionGlobal(Compositor *compositor)
- : QtWaylandServer::qt_surface_extension(compositor->wl_display())
+ : QtWaylandServer::qt_surface_extension(compositor->wl_display(), 1)
{
}
@@ -57,12 +57,12 @@ void SurfaceExtensionGlobal::surface_extension_get_extended_surface(Resource *re
struct wl_resource *surface_resource)
{
Surface *surface = Surface::fromResource(surface_resource);
- new ExtendedSurface(resource->client(),id,surface);
+ new ExtendedSurface(resource->client(),id, wl_resource_get_version(resource->handle), surface);
}
-ExtendedSurface::ExtendedSurface(struct wl_client *client, uint32_t id, Surface *surface)
+ExtendedSurface::ExtendedSurface(struct wl_client *client, uint32_t id, int version, Surface *surface)
: QWaylandSurfaceInterface(surface->waylandSurface())
- , QtWaylandServer::qt_extended_surface(client,id)
+ , QtWaylandServer::qt_extended_surface(client, id, version)
, m_surface(surface)
, m_windowFlags(0)
{
diff --git a/src/compositor/wayland_wrapper/qwlextendedsurface_p.h b/src/compositor/wayland_wrapper/qwlextendedsurface_p.h
index c22a42832..c64456666 100644
--- a/src/compositor/wayland_wrapper/qwlextendedsurface_p.h
+++ b/src/compositor/wayland_wrapper/qwlextendedsurface_p.h
@@ -75,7 +75,7 @@ private:
class ExtendedSurface : public QWaylandSurfaceInterface, public QtWaylandServer::qt_extended_surface
{
public:
- ExtendedSurface(struct wl_client *client, uint32_t id, Surface *surface);
+ ExtendedSurface(struct wl_client *client, uint32_t id, int version, Surface *surface);
~ExtendedSurface();
void sendGenericProperty(const QString &name, const QVariant &variant);
diff --git a/src/compositor/wayland_wrapper/qwlinputdevice.cpp b/src/compositor/wayland_wrapper/qwlinputdevice.cpp
index 8ac629c86..40f21134e 100644
--- a/src/compositor/wayland_wrapper/qwlinputdevice.cpp
+++ b/src/compositor/wayland_wrapper/qwlinputdevice.cpp
@@ -60,7 +60,7 @@ QT_BEGIN_NAMESPACE
namespace QtWayland {
InputDevice::InputDevice(QWaylandInputDevice *handle, Compositor *compositor, QWaylandInputDevice::CapabilityFlags caps)
- : QtWaylandServer::wl_seat(compositor->wl_display())
+ : QtWaylandServer::wl_seat(compositor->wl_display(), 2)
, m_handle(handle)
, m_dragHandle(new QWaylandDrag(this))
, m_compositor(compositor)
@@ -151,21 +151,21 @@ void InputDevice::setCapabilities(QWaylandInputDevice::CapabilityFlags caps)
void InputDevice::seat_get_pointer(wl_seat::Resource *resource, uint32_t id)
{
if (!m_pointer.isNull()) {
- m_pointer->add(resource->client(), id);
+ m_pointer->add(resource->client(), id, resource->version());
}
}
void InputDevice::seat_get_keyboard(wl_seat::Resource *resource, uint32_t id)
{
if (!m_keyboard.isNull()) {
- m_keyboard->add(resource->client(), id);
+ m_keyboard->add(resource->client(), id, resource->version());
}
}
void InputDevice::seat_get_touch(wl_seat::Resource *resource, uint32_t id)
{
if (!m_touch.isNull()) {
- m_touch->add(resource->client(), id);
+ m_touch->add(resource->client(), id, resource->version());
}
}
@@ -337,7 +337,7 @@ void InputDevice::clientRequestedDataDevice(DataDeviceManager *, struct wl_clien
{
if (!m_data_device)
m_data_device.reset(new DataDevice(this));
- m_data_device->add(client, id);
+ m_data_device->add(client, id, 1);
}
Compositor *InputDevice::compositor() const
diff --git a/src/compositor/wayland_wrapper/qwlinputmethod.cpp b/src/compositor/wayland_wrapper/qwlinputmethod.cpp
index d1b43992f..ea495b37c 100644
--- a/src/compositor/wayland_wrapper/qwlinputmethod.cpp
+++ b/src/compositor/wayland_wrapper/qwlinputmethod.cpp
@@ -52,7 +52,7 @@ QT_BEGIN_NAMESPACE
namespace QtWayland {
InputMethod::InputMethod(Compositor *compositor, InputDevice *seat)
- : QtWaylandServer::wl_input_method(seat->compositor()->wl_display())
+ : QtWaylandServer::wl_input_method(seat->compositor()->wl_display(), 1)
, m_compositor(compositor)
, m_seat(seat)
, m_resource(0)
diff --git a/src/compositor/wayland_wrapper/qwlinputmethodcontext.cpp b/src/compositor/wayland_wrapper/qwlinputmethodcontext.cpp
index b8a7859f5..5b9a24db1 100644
--- a/src/compositor/wayland_wrapper/qwlinputmethodcontext.cpp
+++ b/src/compositor/wayland_wrapper/qwlinputmethodcontext.cpp
@@ -47,7 +47,7 @@ QT_BEGIN_NAMESPACE
namespace QtWayland {
InputMethodContext::InputMethodContext(wl_client *client, TextInput *textInput)
- : QtWaylandServer::wl_input_method_context(client, 0)
+ : QtWaylandServer::wl_input_method_context(client, 0, 1)
, m_textInput(textInput)
{
}
diff --git a/src/compositor/wayland_wrapper/qwlinputpanel.cpp b/src/compositor/wayland_wrapper/qwlinputpanel.cpp
index 3848543d7..4dae2749c 100644
--- a/src/compositor/wayland_wrapper/qwlinputpanel.cpp
+++ b/src/compositor/wayland_wrapper/qwlinputpanel.cpp
@@ -54,7 +54,7 @@ QT_BEGIN_NAMESPACE
namespace QtWayland {
InputPanel::InputPanel(Compositor *compositor)
- : QtWaylandServer::wl_input_panel(compositor->wl_display())
+ : QtWaylandServer::wl_input_panel(compositor->wl_display(), 1)
, m_compositor(compositor)
, m_handle(new QWaylandInputPanel(this))
, m_focus()
diff --git a/src/compositor/wayland_wrapper/qwlinputpanelsurface.cpp b/src/compositor/wayland_wrapper/qwlinputpanelsurface.cpp
index fd258bcb5..138e57032 100644
--- a/src/compositor/wayland_wrapper/qwlinputpanelsurface.cpp
+++ b/src/compositor/wayland_wrapper/qwlinputpanelsurface.cpp
@@ -48,7 +48,7 @@ QT_BEGIN_NAMESPACE
namespace QtWayland {
InputPanelSurface::InputPanelSurface(wl_client *client, int id, Surface *surface)
- : QtWaylandServer::wl_input_panel_surface(client, id)
+ : QtWaylandServer::wl_input_panel_surface(client, id, 1)
, m_surface(surface)
, m_type(Invalid)
, m_output(0)
diff --git a/src/compositor/wayland_wrapper/qwloutput.cpp b/src/compositor/wayland_wrapper/qwloutput.cpp
index 09e2abc87..7638370bc 100644
--- a/src/compositor/wayland_wrapper/qwloutput.cpp
+++ b/src/compositor/wayland_wrapper/qwloutput.cpp
@@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE
namespace QtWayland {
OutputGlobal::OutputGlobal(struct ::wl_display *display)
- : QtWaylandServer::wl_output(display)
+ : QtWaylandServer::wl_output(display, 2)
, m_displayId(-1)
, m_numQueued(0)
, m_transform(WL_OUTPUT_TRANSFORM_NORMAL)
@@ -70,7 +70,9 @@ void OutputGlobal::output_bind_resource(Resource *resource)
wl_output_send_mode(resource->handle, WL_OUTPUT_MODE_CURRENT|WL_OUTPUT_MODE_PREFERRED,
size().width(), size().height(), refreshRate());
- wl_output_send_done(resource->handle);
+
+ if (resource->version() >= 2)
+ wl_output_send_done(resource->handle);
}
void OutputGlobal::setPhysicalSize(const QSize &size)
@@ -81,7 +83,9 @@ void OutputGlobal::setPhysicalSize(const QSize &size)
foreach (Resource *res, resourceMap()) {
wl_output_send_geometry(res->handle, 0, 0,
m_physicalSize.width(), m_physicalSize.height(), 0, "", "", m_transform);
- wl_output_send_done(res->handle);
+
+ if (res->version() >= 2)
+ wl_output_send_done(res->handle);
}
}
}
@@ -121,7 +125,8 @@ void OutputGlobal::sendOutputOrientation(Qt::ScreenOrientation orientation)
foreach (Resource *res, resourceMap()) {
wl_output_send_geometry(res->handle, 0, 0,
m_physicalSize.width(), m_physicalSize.height(), 0, "", "", m_transform);
- wl_output_send_done(res->handle);
+ if (res->version() >= 2)
+ wl_output_send_done(res->handle);
}
}
diff --git a/src/compositor/wayland_wrapper/qwlqtkey.cpp b/src/compositor/wayland_wrapper/qwlqtkey.cpp
index 74c21b6a8..285709064 100644
--- a/src/compositor/wayland_wrapper/qwlqtkey.cpp
+++ b/src/compositor/wayland_wrapper/qwlqtkey.cpp
@@ -48,7 +48,7 @@ QT_BEGIN_NAMESPACE
namespace QtWayland {
QtKeyExtensionGlobal::QtKeyExtensionGlobal(Compositor *compositor)
- : QtWaylandServer::qt_key_extension(compositor->wl_display())
+ : QtWaylandServer::qt_key_extension(compositor->wl_display(), 2)
, m_compositor(compositor)
{
}
diff --git a/src/compositor/wayland_wrapper/qwlqttouch.cpp b/src/compositor/wayland_wrapper/qwlqttouch.cpp
index 335ee1489..0110c433b 100644
--- a/src/compositor/wayland_wrapper/qwlqttouch.cpp
+++ b/src/compositor/wayland_wrapper/qwlqttouch.cpp
@@ -51,7 +51,7 @@ namespace QtWayland {
static const int maxRawPos = 24;
TouchExtensionGlobal::TouchExtensionGlobal(Compositor *compositor)
- : QtWaylandServer::qt_touch_extension(compositor->wl_display())
+ : QtWaylandServer::qt_touch_extension(compositor->wl_display(), 1)
, m_compositor(compositor)
, m_flags(0)
, m_resources()
diff --git a/src/compositor/wayland_wrapper/qwlregion.cpp b/src/compositor/wayland_wrapper/qwlregion.cpp
index fdbc5390d..f9bcde380 100644
--- a/src/compositor/wayland_wrapper/qwlregion.cpp
+++ b/src/compositor/wayland_wrapper/qwlregion.cpp
@@ -47,7 +47,7 @@ QT_BEGIN_NAMESPACE
namespace QtWayland {
Region::Region(struct wl_client *client, uint32_t id)
- : QtWaylandServer::wl_region(client, id)
+ : QtWaylandServer::wl_region(client, id, 1)
{
}
diff --git a/src/compositor/wayland_wrapper/qwlshellsurface.cpp b/src/compositor/wayland_wrapper/qwlshellsurface.cpp
index d54a223d6..97380feba 100644
--- a/src/compositor/wayland_wrapper/qwlshellsurface.cpp
+++ b/src/compositor/wayland_wrapper/qwlshellsurface.cpp
@@ -67,8 +67,7 @@ const wl_interface *Shell::interface() const
void Shell::bind(struct wl_client *client, uint32_t version, uint32_t id)
{
- Q_UNUSED(version)
- add(client, id);
+ add(client, id, version);
}
ShellSurfacePopupGrabber *Shell::getPopupGrabber(InputDevice *input)
@@ -89,7 +88,7 @@ void Shell::shell_get_shell_surface(Resource *resource, uint32_t id, struct ::wl
ShellSurface::ShellSurface(Shell *shell, wl_client *client, uint32_t id, Surface *surface)
: QWaylandSurfaceInterface(surface->waylandSurface())
- , wl_shell_surface(client, id)
+ , wl_shell_surface(client, id, 1)
, m_shell(shell)
, m_surface(surface)
, m_deleting(false)
diff --git a/src/compositor/wayland_wrapper/qwlsurface.cpp b/src/compositor/wayland_wrapper/qwlsurface.cpp
index a89aacef6..e63fcff25 100644
--- a/src/compositor/wayland_wrapper/qwlsurface.cpp
+++ b/src/compositor/wayland_wrapper/qwlsurface.cpp
@@ -104,8 +104,8 @@ public:
bool canSend;
};
-Surface::Surface(struct wl_client *client, uint32_t id, QWaylandCompositor *compositor, QWaylandSurface *surface)
- : QtWaylandServer::wl_surface(client, id)
+Surface::Surface(struct wl_client *client, uint32_t id, int version, QWaylandCompositor *compositor, QWaylandSurface *surface)
+ : QtWaylandServer::wl_surface(client, id, version)
, m_compositor(compositor->handle())
, m_waylandSurface(surface)
, m_buffer(0)
diff --git a/src/compositor/wayland_wrapper/qwlsurface_p.h b/src/compositor/wayland_wrapper/qwlsurface_p.h
index ff7b09250..5a3c4be3d 100644
--- a/src/compositor/wayland_wrapper/qwlsurface_p.h
+++ b/src/compositor/wayland_wrapper/qwlsurface_p.h
@@ -76,7 +76,7 @@ class FrameCallback;
class Q_COMPOSITOR_EXPORT Surface : public QtWaylandServer::wl_surface
{
public:
- Surface(struct wl_client *client, uint32_t id, QWaylandCompositor *compositor, QWaylandSurface *surface);
+ Surface(struct wl_client *client, uint32_t id, int version, QWaylandCompositor *compositor, QWaylandSurface *surface);
~Surface();
static Surface *fromResource(struct ::wl_resource *resource);
diff --git a/src/compositor/wayland_wrapper/qwltextinput.cpp b/src/compositor/wayland_wrapper/qwltextinput.cpp
index 35bce8327..9aba674f4 100644
--- a/src/compositor/wayland_wrapper/qwltextinput.cpp
+++ b/src/compositor/wayland_wrapper/qwltextinput.cpp
@@ -54,7 +54,7 @@ QT_BEGIN_NAMESPACE
namespace QtWayland {
TextInput::TextInput(Compositor *compositor, struct ::wl_client *client, int id)
- : wl_text_input(client, id)
+ : wl_text_input(client, id, 1)
, m_compositor(compositor)
, m_focus()
, m_inputPanelVisible()
diff --git a/src/compositor/wayland_wrapper/qwltextinputmanager.cpp b/src/compositor/wayland_wrapper/qwltextinputmanager.cpp
index 87b6e54e5..92062944b 100644
--- a/src/compositor/wayland_wrapper/qwltextinputmanager.cpp
+++ b/src/compositor/wayland_wrapper/qwltextinputmanager.cpp
@@ -48,7 +48,7 @@ QT_BEGIN_NAMESPACE
namespace QtWayland {
TextInputManager::TextInputManager(Compositor *compositor)
- : QtWaylandServer::wl_text_input_manager(compositor->wl_display())
+ : QtWaylandServer::wl_text_input_manager(compositor->wl_display(), 1)
, m_compositor(compositor)
{
}
diff --git a/src/compositor/windowmanagerprotocol/waylandwindowmanagerintegration.cpp b/src/compositor/windowmanagerprotocol/waylandwindowmanagerintegration.cpp
index 7105c7026..5387854a4 100644
--- a/src/compositor/windowmanagerprotocol/waylandwindowmanagerintegration.cpp
+++ b/src/compositor/windowmanagerprotocol/waylandwindowmanagerintegration.cpp
@@ -65,7 +65,7 @@ WindowManagerServerIntegration::~WindowManagerServerIntegration()
void WindowManagerServerIntegration::initialize(QtWayland::Display *waylandDisplay)
{
- init(waylandDisplay->handle());
+ init(waylandDisplay->handle(), 1);
}
void WindowManagerServerIntegration::setShowIsFullScreen(bool value)
diff --git a/src/hardwareintegration/compositor/brcm-egl/brcmbuffer.cpp b/src/hardwareintegration/compositor/brcm-egl/brcmbuffer.cpp
index e4fbfb553..d480b2dae 100644
--- a/src/hardwareintegration/compositor/brcm-egl/brcmbuffer.cpp
+++ b/src/hardwareintegration/compositor/brcm-egl/brcmbuffer.cpp
@@ -48,7 +48,7 @@
QT_BEGIN_NAMESPACE
BrcmBuffer::BrcmBuffer(struct ::wl_client *client, uint32_t id, const QSize &size, EGLint *data, size_t count)
- : QtWaylandServer::wl_buffer(client, id)
+ : QtWaylandServer::wl_buffer(client, id, 1)
, m_handle(count)
, m_invertedY(false)
, m_size(size)
diff --git a/src/hardwareintegration/compositor/brcm-egl/brcmeglintegration.cpp b/src/hardwareintegration/compositor/brcm-egl/brcmeglintegration.cpp
index 66533fecb..9fc8badd5 100644
--- a/src/hardwareintegration/compositor/brcm-egl/brcmeglintegration.cpp
+++ b/src/hardwareintegration/compositor/brcm-egl/brcmeglintegration.cpp
@@ -120,7 +120,7 @@ void BrcmEglIntegration::initializeHardware(QtWayland::Display *waylandDisplay)
return;
}
d->valid = true;
- init(waylandDisplay->handle());
+ init(waylandDisplay->handle(), 1);
}
}
diff --git a/src/hardwareintegration/compositor/drm-egl-server/drmeglserverbufferintegration.cpp b/src/hardwareintegration/compositor/drm-egl-server/drmeglserverbufferintegration.cpp
index 09588f6ff..4e9a04495 100644
--- a/src/hardwareintegration/compositor/drm-egl-server/drmeglserverbufferintegration.cpp
+++ b/src/hardwareintegration/compositor/drm-egl-server/drmeglserverbufferintegration.cpp
@@ -95,7 +95,7 @@ struct ::wl_resource *DrmEglServerBuffer::resourceForClient(struct ::wl_client *
return 0;
}
struct ::wl_resource *drm_egl_resource = (*drm_egl_it)->handle;
- Resource *resource = add(client);
+ Resource *resource = add(client, 1, 1);
m_integration->send_server_buffer_created(drm_egl_resource, resource->handle, m_name, m_size.width(), m_size.height(), m_stride, m_drm_format);
return resource->handle;
}
@@ -166,7 +166,7 @@ void DrmEglServerBufferIntegration::initializeHardware(QWaylandCompositor *compo
return;
}
- QtWaylandServer::qt_drm_egl_server_buffer::init(compositor->waylandDisplay());
+ QtWaylandServer::qt_drm_egl_server_buffer::init(compositor->waylandDisplay(), 1);
}
bool DrmEglServerBufferIntegration::supportsFormat(QtWayland::ServerBuffer::Format format) const
diff --git a/src/hardwareintegration/compositor/libhybris-egl-server/libhybriseglserverbufferintegration.cpp b/src/hardwareintegration/compositor/libhybris-egl-server/libhybriseglserverbufferintegration.cpp
index c15f3d154..7e7a14ab8 100644
--- a/src/hardwareintegration/compositor/libhybris-egl-server/libhybriseglserverbufferintegration.cpp
+++ b/src/hardwareintegration/compositor/libhybris-egl-server/libhybriseglserverbufferintegration.cpp
@@ -89,7 +89,7 @@ struct ::wl_resource *LibHybrisEglServerBuffer::resourceForClient(struct ::wl_cl
return 0;
}
struct ::wl_resource *egl_resource = (*egl_it)->handle;
- Resource *resource = add(client);
+ Resource *resource = add(client, 1, 1);
wl_resource *bufRes = wl_client_new_object(client, &qt_libhybris_buffer_interface, 0, 0);
m_integration->send_server_buffer_created(egl_resource, resource->handle, bufRes, m_fds.size(), QByteArray((char *)m_ints.data(), m_ints.size() * sizeof(int32_t)),
@@ -174,7 +174,7 @@ void LibHybrisEglServerBufferIntegration::initializeHardware(QWaylandCompositor
return;
}
- QtWaylandServer::qt_libhybris_egl_server_buffer::init(compositor->waylandDisplay());
+ QtWaylandServer::qt_libhybris_egl_server_buffer::init(compositor->waylandDisplay(), 1);
}
bool LibHybrisEglServerBufferIntegration::supportsFormat(QtWayland::ServerBuffer::Format format) const
diff --git a/src/hardwareintegration/compositor/xcomposite_share/xcompositebuffer.cpp b/src/hardwareintegration/compositor/xcomposite_share/xcompositebuffer.cpp
index 0457214b4..09789d864 100644
--- a/src/hardwareintegration/compositor/xcomposite_share/xcompositebuffer.cpp
+++ b/src/hardwareintegration/compositor/xcomposite_share/xcompositebuffer.cpp
@@ -44,7 +44,7 @@ QT_BEGIN_NAMESPACE
XCompositeBuffer::XCompositeBuffer(Window window, const QSize &size,
struct ::wl_client *client, uint32_t id)
- : QtWaylandServer::wl_buffer(client, id)
+ : QtWaylandServer::wl_buffer(client, id, 1)
, mWindow(window)
, mInvertedY(false)
, mSize(size)
diff --git a/src/hardwareintegration/compositor/xcomposite_share/xcompositehandler.cpp b/src/hardwareintegration/compositor/xcomposite_share/xcompositehandler.cpp
index 0f10d38de..5e002377e 100644
--- a/src/hardwareintegration/compositor/xcomposite_share/xcompositehandler.cpp
+++ b/src/hardwareintegration/compositor/xcomposite_share/xcompositehandler.cpp
@@ -48,7 +48,7 @@
QT_BEGIN_NAMESPACE
XCompositeHandler::XCompositeHandler(QtWayland::Compositor *compositor, Display *display)
- : QtWaylandServer::qt_xcomposite(compositor->wl_display())
+ : QtWaylandServer::qt_xcomposite(compositor->wl_display(), 1)
{
compositor->window()->create();
diff --git a/src/qtwaylandscanner/qtwaylandscanner.cpp b/src/qtwaylandscanner/qtwaylandscanner.cpp
index c99bf2b48..ae5ec40db 100644
--- a/src/qtwaylandscanner/qtwaylandscanner.cpp
+++ b/src/qtwaylandscanner/qtwaylandscanner.cpp
@@ -416,8 +416,8 @@ void process(QXmlStreamReader &xml, const QByteArray &headerPath, const QByteArr
printf(" class %s %s\n {\n", serverExport.constData(), interfaceName);
printf(" public:\n");
- printf(" %s(struct ::wl_client *client, int id);\n", interfaceName);
- printf(" %s(struct ::wl_display *display);\n", interfaceName);
+ printf(" %s(struct ::wl_client *client, int id, int version);\n", interfaceName);
+ printf(" %s(struct ::wl_display *display, int version);\n", interfaceName);
printf(" %s();\n", interfaceName);
printf("\n");
printf(" virtual ~%s();\n", interfaceName);
@@ -432,16 +432,17 @@ void process(QXmlStreamReader &xml, const QByteArray &headerPath, const QByteArr
printf(" struct ::wl_resource *handle;\n");
printf("\n");
printf(" struct ::wl_client *client() const { return handle->client; }\n");
+ printf(" int version() const { return wl_resource_get_version(handle); }\n");
printf("\n");
printf(" static Resource *fromResource(struct ::wl_resource *resource) { return static_cast<Resource *>(resource->data); }\n");
printf(" };\n");
printf("\n");
- printf(" void init(struct ::wl_client *client, int id);\n");
- printf(" void init(struct ::wl_display *display);\n");
+ printf(" void init(struct ::wl_client *client, int id, int version);\n");
+ printf(" void init(struct ::wl_display *display, int version);\n");
printf("\n");
- printf(" Resource *add(struct ::wl_client *client);\n");
- printf(" Resource *add(struct ::wl_client *client, int id);\n");
- printf(" Resource *add(struct wl_list *resource_list, struct ::wl_client *client, int id);\n");
+ printf(" Resource *add(struct ::wl_client *client, int version);\n");
+ printf(" Resource *add(struct ::wl_client *client, int id, int version);\n");
+ printf(" Resource *add(struct wl_list *resource_list, struct ::wl_client *client, int id, int version);\n");
printf("\n");
printf(" Resource *resource() { return m_resource; }\n");
printf(" const Resource *resource() const { return m_resource; }\n");
@@ -491,7 +492,7 @@ void process(QXmlStreamReader &xml, const QByteArray &headerPath, const QByteArr
printf(" static void bind_func(struct ::wl_client *client, void *data, uint32_t version, uint32_t id);\n");
printf(" static void destroy_func(struct ::wl_resource *client_resource);\n");
printf("\n");
- printf(" Resource *bind(struct ::wl_client *client, uint32_t id);\n");
+ printf(" Resource *bind(struct ::wl_client *client, uint32_t id, int version);\n");
if (hasRequests) {
printf("\n");
@@ -511,6 +512,7 @@ void process(QXmlStreamReader &xml, const QByteArray &headerPath, const QByteArr
printf(" QMultiMap<struct ::wl_client*, Resource*> m_resource_map;\n");
printf(" Resource *m_resource;\n");
printf(" struct ::wl_global *m_global;\n");
+ printf(" uint32_t m_globalVersion;\n");
printf(" };\n");
if (j < interfaces.size() - 1)
@@ -551,21 +553,21 @@ void process(QXmlStreamReader &xml, const QByteArray &headerPath, const QByteArr
QByteArray stripped = stripInterfaceName(interface.name, prefix);
const char *interfaceNameStripped = stripped.constData();
- printf(" %s::%s(struct ::wl_client *client, int id)\n", interfaceName, interfaceName);
+ printf(" %s::%s(struct ::wl_client *client, int id, int version)\n", interfaceName, interfaceName);
printf(" : m_resource_map()\n");
printf(" , m_resource(0)\n");
printf(" , m_global(0)\n");
printf(" {\n");
- printf(" init(client, id);\n");
+ printf(" init(client, id, version);\n");
printf(" }\n");
printf("\n");
- printf(" %s::%s(struct ::wl_display *display)\n", interfaceName, interfaceName);
+ printf(" %s::%s(struct ::wl_display *display, int version)\n", interfaceName, interfaceName);
printf(" : m_resource_map()\n");
printf(" , m_resource(0)\n");
printf(" , m_global(0)\n");
printf(" {\n");
- printf(" init(display);\n");
+ printf(" init(display, version);\n");
printf(" }\n");
printf("\n");
@@ -582,31 +584,32 @@ void process(QXmlStreamReader &xml, const QByteArray &headerPath, const QByteArr
printf(" }\n");
printf("\n");
- printf(" void %s::init(struct ::wl_client *client, int id)\n", interfaceName);
+ printf(" void %s::init(struct ::wl_client *client, int id, int version)\n", interfaceName);
printf(" {\n");
- printf(" m_resource = bind(client, id);\n");
+ printf(" m_resource = bind(client, id, version);\n");
printf(" }\n");
printf("\n");
- printf(" %s::Resource *%s::add(struct ::wl_client *client)\n", interfaceName, interfaceName);
+ printf(" %s::Resource *%s::add(struct ::wl_client *client, int version)\n", interfaceName, interfaceName);
printf(" {\n");
- printf(" Resource *resource = bind(client, 0);\n");
+ printf(" Resource *resource = bind(client, 0, version);\n");
printf(" m_resource_map.insert(client, resource);\n");
printf(" return resource;\n");
printf(" }\n");
printf("\n");
- printf(" %s::Resource *%s::add(struct ::wl_client *client, int id)\n", interfaceName, interfaceName);
+ printf(" %s::Resource *%s::add(struct ::wl_client *client, int id, int version)\n", interfaceName, interfaceName);
printf(" {\n");
- printf(" Resource *resource = bind(client, id);\n");
+ printf(" Resource *resource = bind(client, id, version);\n");
printf(" m_resource_map.insert(client, resource);\n");
printf(" return resource;\n");
printf(" }\n");
printf("\n");
- printf(" void %s::init(struct ::wl_display *display)\n", interfaceName);
+ printf(" void %s::init(struct ::wl_display *display, int version)\n", interfaceName);
printf(" {\n");
- printf(" m_global = wl_global_create(display, &::%s_interface, ::%s_interface.version, this, bind_func);\n", interfaceName, interfaceName);
+ printf(" m_global = wl_global_create(display, &::%s_interface, version, this, bind_func);\n", interfaceName);
+ printf(" m_globalVersion = version;\n");
printf(" }\n");
printf("\n");
@@ -628,8 +631,8 @@ void process(QXmlStreamReader &xml, const QByteArray &headerPath, const QByteArr
printf(" void %s::bind_func(struct ::wl_client *client, void *data, uint32_t version, uint32_t id)\n", interfaceName);
printf(" {\n");
- printf(" Q_UNUSED(version);\n");
- printf(" static_cast<%s *>(data)->add(client, id);\n", interfaceName);
+ printf(" %s *that = static_cast<%s *>(data);\n", interfaceName, interfaceName);
+ printf(" that->add(client, id, qMin(that->m_globalVersion, version));\n");
printf(" }\n");
printf("\n");
@@ -652,12 +655,12 @@ void process(QXmlStreamReader &xml, const QByteArray &headerPath, const QByteArr
//We should consider changing bind so that it doesn't special case id == 0
//and use function overloading instead. Jan do you have a lot of code dependent on this behavior?
- printf(" %s::Resource *%s::bind(struct ::wl_client *client, uint32_t id)\n", interfaceName, interfaceName);
+ printf(" %s::Resource *%s::bind(struct ::wl_client *client, uint32_t id, int version)\n", interfaceName, interfaceName);
printf(" {\n");
printf(" Resource *resource = %s_allocate();\n", interfaceNameStripped);
printf(" resource->%s_object = this;\n", interfaceNameStripped);
printf("\n");
- printf(" struct ::wl_resource *handle = wl_resource_create(client, &::%s_interface, ::%s_interface.version, id);\n", interfaceName, interfaceName);
+ printf(" struct ::wl_resource *handle = wl_resource_create(client, &::%s_interface, version, id);\n", interfaceName);
printf(" wl_resource_set_implementation(handle, %s, resource, destroy_func);", interfaceMember.constData());
printf("\n");
printf(" resource->handle = handle;\n");
diff --git a/tests/auto/client/mockcompositor.cpp b/tests/auto/client/mockcompositor.cpp
index cb0e6576e..665b7dd73 100644
--- a/tests/auto/client/mockcompositor.cpp
+++ b/tests/auto/client/mockcompositor.cpp
@@ -238,7 +238,7 @@ void Compositor::dispatchEvents(int timeout)
static void compositor_create_surface(wl_client *client, wl_resource *compositorResource, uint32_t id)
{
Compositor *compositor = static_cast<Compositor *>(compositorResource->data);
- compositor->addSurface(new Surface(client, id, compositor));
+ compositor->addSurface(new Surface(client, id, wl_resource_get_version(compositorResource), compositor));
}
static void compositor_create_region(wl_client *client, wl_resource *compositorResource, uint32_t id)
diff --git a/tests/auto/client/mockinput.cpp b/tests/auto/client/mockinput.cpp
index fbe44de41..754aa4590 100644
--- a/tests/auto/client/mockinput.cpp
+++ b/tests/auto/client/mockinput.cpp
@@ -101,7 +101,7 @@ void Compositor::sendKeyRelease(void *data, const QList<QVariant> &parameters)
}
Seat::Seat(Compositor *compositor, struct ::wl_display *display)
- : wl_seat(display)
+ : wl_seat(display, 2)
, m_compositor(compositor)
, m_keyboard(new Keyboard(compositor))
, m_pointer(new Pointer(compositor))
@@ -119,12 +119,12 @@ void Seat::seat_bind_resource(Resource *resource)
void Seat::seat_get_keyboard(Resource *resource, uint32_t id)
{
- m_keyboard->add(resource->client(), id);
+ m_keyboard->add(resource->client(), id, resource->version());
}
void Seat::seat_get_pointer(Resource *resource, uint32_t id)
{
- m_pointer->add(resource->client(), id);
+ m_pointer->add(resource->client(), id, resource->version());
}
Keyboard::Keyboard(Compositor *compositor)
@@ -240,7 +240,7 @@ DataDevice::~DataDevice()
}
DataDeviceManager::DataDeviceManager(Compositor *compositor, wl_display *display)
- : wl_data_device_manager(display)
+ : wl_data_device_manager(display, 1)
, m_compositor(compositor)
{
@@ -255,7 +255,7 @@ void DataDeviceManager::data_device_manager_get_data_device(Resource *resource,
{
if (!m_data_device)
m_data_device.reset(new DataDevice(m_compositor));
- m_data_device->add(resource->client(), id);
+ m_data_device->add(resource->client(), id, 1);
}
}
diff --git a/tests/auto/client/mocksurface.cpp b/tests/auto/client/mocksurface.cpp
index 2e4c2bc73..330213bde 100644
--- a/tests/auto/client/mocksurface.cpp
+++ b/tests/auto/client/mocksurface.cpp
@@ -44,8 +44,8 @@
namespace Impl {
-Surface::Surface(wl_client *client, uint32_t id, Compositor *compositor)
- : QtWaylandServer::wl_surface(client, id)
+Surface::Surface(wl_client *client, uint32_t id, int v, Compositor *compositor)
+ : QtWaylandServer::wl_surface(client, id, v)
, m_buffer(Q_NULLPTR)
, m_compositor(compositor)
, m_mockSurface(new MockSurface(this))
diff --git a/tests/auto/client/mocksurface.h b/tests/auto/client/mocksurface.h
index f2a2f4eb3..33ced4385 100644
--- a/tests/auto/client/mocksurface.h
+++ b/tests/auto/client/mocksurface.h
@@ -50,7 +50,7 @@ namespace Impl {
class Surface : public QtWaylandServer::wl_surface
{
public:
- Surface(wl_client *client, uint32_t id, Compositor *compositor);
+ Surface(wl_client *client, uint32_t id, int v, Compositor *compositor);
~Surface();
Compositor *compositor() const { return m_compositor; }