From b1cae1062d8ed70b2e72b2c25979847ebdf48323 Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Wed, 28 Mar 2012 13:58:04 +0300 Subject: [PATCH] Change the touch extension to be always available. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Not opt-in anymore. Clients that connect to the extension will get the extended touch events, others will get the regular events. Change-Id: I91daec1949814fff5cfa0ebcc82c0977eee963b7 Reviewed-by: Samuel Rødal --- src/compositor/compositor_api/waylandcompositor.cpp | 2 +- src/compositor/wayland_wrapper/wlcompositor.cpp | 8 +------- src/compositor/wayland_wrapper/wlcompositor.h | 1 - src/compositor/wayland_wrapper/wlinputdevice.cpp | 4 +--- src/compositor/wayland_wrapper/wltouch.cpp | 8 ++++++-- src/compositor/wayland_wrapper/wltouch.h | 2 +- 6 files changed, 10 insertions(+), 15 deletions(-) diff --git a/src/compositor/compositor_api/waylandcompositor.cpp b/src/compositor/compositor_api/waylandcompositor.cpp index 301d422..95a7bb5 100644 --- a/src/compositor/compositor_api/waylandcompositor.cpp +++ b/src/compositor/compositor_api/waylandcompositor.cpp @@ -208,7 +208,7 @@ void WaylandCompositor::enableSubSurfaceExtension() void WaylandCompositor::enableTouchExtension() { - m_compositor->enableTouchExtension(); + // nothing to do here } void WaylandCompositor::configureTouchExtension(TouchExtensionFlags flags) diff --git a/src/compositor/wayland_wrapper/wlcompositor.cpp b/src/compositor/wayland_wrapper/wlcompositor.cpp index 4b3876c..d539e2d 100644 --- a/src/compositor/wayland_wrapper/wlcompositor.cpp +++ b/src/compositor/wayland_wrapper/wlcompositor.cpp @@ -156,6 +156,7 @@ Compositor::Compositor(WaylandCompositor *qt_compositor) m_outputExtension = new OutputExtensionGlobal(this); m_surfaceExtension = new SurfaceExtensionGlobal(this); m_qtkeyExtension = new QtKeyExtensionGlobal(this); + m_touchExtension = new TouchExtensionGlobal(this); if (wl_display_add_socket(m_display->handle(), qt_compositor->socketName())) { fprintf(stderr, "Fatal: Failed to open server socket\n"); @@ -412,13 +413,6 @@ QList Compositor::surfacesForClient(wl_client *client) return ret; } -void Compositor::enableTouchExtension() -{ - if (!m_touchExtension) { - m_touchExtension = new TouchExtensionGlobal(this); - } -} - void Compositor::configureTouchExtension(int flags) { if (m_touchExtension) diff --git a/src/compositor/wayland_wrapper/wlcompositor.h b/src/compositor/wayland_wrapper/wlcompositor.h index 1710619..2ed4a1b 100644 --- a/src/compositor/wayland_wrapper/wlcompositor.h +++ b/src/compositor/wayland_wrapper/wlcompositor.h @@ -127,7 +127,6 @@ public: void setClientFullScreenHint(bool value); - void enableTouchExtension(); TouchExtensionGlobal *touchExtension() { return m_touchExtension; } void configureTouchExtension(int flags); diff --git a/src/compositor/wayland_wrapper/wlinputdevice.cpp b/src/compositor/wayland_wrapper/wlinputdevice.cpp index 3c23d48..2e0f4b8 100644 --- a/src/compositor/wayland_wrapper/wlinputdevice.cpp +++ b/src/compositor/wayland_wrapper/wlinputdevice.cpp @@ -199,10 +199,8 @@ void InputDevice::sendFullTouchEvent(QTouchEvent *event) } TouchExtensionGlobal *ext = m_compositor->touchExtension(); - if (ext) { - ext->postTouchEvent(event, mouseFocus()); + if (ext && ext->postTouchEvent(event, mouseFocus())) return; - } const QList points = event->touchPoints(); if (points.isEmpty()) diff --git a/src/compositor/wayland_wrapper/wltouch.cpp b/src/compositor/wayland_wrapper/wltouch.cpp index 9038d59..99cb8cb 100644 --- a/src/compositor/wayland_wrapper/wltouch.cpp +++ b/src/compositor/wayland_wrapper/wltouch.cpp @@ -95,12 +95,12 @@ static inline int toFixed(qreal f) return int(f * 10000); } -void TouchExtensionGlobal::postTouchEvent(QTouchEvent *event, Surface *surface) +bool TouchExtensionGlobal::postTouchEvent(QTouchEvent *event, Surface *surface) { const QList points = event->touchPoints(); const int pointCount = points.count(); if (!pointCount) - return; + return false; QPointF surfacePos = surface->pos(); wl_client *surfaceClient = surface->base()->resource.client; @@ -166,7 +166,11 @@ void TouchExtensionGlobal::postTouchEvent(QTouchEvent *event, Surface *surface) pressure, vx, vy, flags, rawData); } + + return true; } + + return false; } } diff --git a/src/compositor/wayland_wrapper/wltouch.h b/src/compositor/wayland_wrapper/wltouch.h index 0d63def..b44a0ff 100644 --- a/src/compositor/wayland_wrapper/wltouch.h +++ b/src/compositor/wayland_wrapper/wltouch.h @@ -57,7 +57,7 @@ public: TouchExtensionGlobal(Compositor *compositor); ~TouchExtensionGlobal(); - void postTouchEvent(QTouchEvent *event, Surface *surface); + bool postTouchEvent(QTouchEvent *event, Surface *surface); void setFlags(int flags) { m_flags = flags; } -- 2.7.4