diff options
author | Laszlo Agocs <laszlo.p.agocs@nokia.com> | 2012-02-07 11:39:49 +0200 |
---|---|---|
committer | Jørgen Lind <jorgen.lind@nokia.com> | 2012-02-07 16:16:52 +0100 |
commit | 083ece74feedb93c0ed208017658c85a4bb1e532 (patch) | |
tree | 430cd31526d56e838df38a24e344e91b789e1223 /src/compositor/wayland_wrapper | |
parent | a39e37100a86aa64a6463c36d5a6444df01ec169 (diff) |
Add mouse event synthesizing to the touch extension protocol.
The compositor can now be configured to tell the clients to generate
mouse events when receiving touch events. In touchscreen-only systems
this can be used to reduce the number of Wayland events.
Change-Id: I231a15cd4ed463ee81c510c082a270efa255a1f3
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
Diffstat (limited to 'src/compositor/wayland_wrapper')
-rw-r--r-- | src/compositor/wayland_wrapper/wlcompositor.cpp | 6 | ||||
-rw-r--r-- | src/compositor/wayland_wrapper/wlcompositor.h | 1 | ||||
-rw-r--r-- | src/compositor/wayland_wrapper/wltouch.cpp | 4 | ||||
-rw-r--r-- | src/compositor/wayland_wrapper/wltouch.h | 6 |
4 files changed, 14 insertions, 3 deletions
diff --git a/src/compositor/wayland_wrapper/wlcompositor.cpp b/src/compositor/wayland_wrapper/wlcompositor.cpp index b28f8f8bd..75e5eb954 100644 --- a/src/compositor/wayland_wrapper/wlcompositor.cpp +++ b/src/compositor/wayland_wrapper/wlcompositor.cpp @@ -384,6 +384,12 @@ void Compositor::enableTouchExtension() } } +void Compositor::configureTouchExtension(int flags) +{ + if (m_touchExtension) + m_touchExtension->setFlags(flags); +} + void Compositor::setRetainedSelectionWatcher(RetainedSelectionFunc func, void *param) { m_retainNotify = func; diff --git a/src/compositor/wayland_wrapper/wlcompositor.h b/src/compositor/wayland_wrapper/wlcompositor.h index fd0e30617..3d4185f69 100644 --- a/src/compositor/wayland_wrapper/wlcompositor.h +++ b/src/compositor/wayland_wrapper/wlcompositor.h @@ -119,6 +119,7 @@ public: void enableTouchExtension(); TouchExtensionGlobal *touchExtension() { return m_touchExtension; } + void configureTouchExtension(int flags); bool isDragging() const; void sendDragMoveEvent(const QPoint &global, const QPoint &local, Surface *surface); diff --git a/src/compositor/wayland_wrapper/wltouch.cpp b/src/compositor/wayland_wrapper/wltouch.cpp index f94c5af0e..06499b1ae 100644 --- a/src/compositor/wayland_wrapper/wltouch.cpp +++ b/src/compositor/wayland_wrapper/wltouch.cpp @@ -56,7 +56,8 @@ const struct wl_touch_extension_interface TouchExtensionGlobal::touch_interface static const int maxRawPos = 24; TouchExtensionGlobal::TouchExtensionGlobal(Compositor *compositor) - : m_compositor(compositor) + : m_compositor(compositor), + m_flags(0) { wl_array_init(&m_rawdata_array); m_rawdata_ptr = static_cast<float *>(wl_array_add(&m_rawdata_array, maxRawPos * sizeof(float) * 2)); @@ -86,6 +87,7 @@ void TouchExtensionGlobal::bind_func(wl_client *client, void *data, uint32_t ver resource->destroy = destroy_resource; TouchExtensionGlobal *self = static_cast<TouchExtensionGlobal *>(resource->data); self->m_resources.append(resource); + wl_resource_post_event(resource, WL_TOUCH_EXTENSION_CONFIGURE, self->m_flags); } static inline int toFixed(qreal f) diff --git a/src/compositor/wayland_wrapper/wltouch.h b/src/compositor/wayland_wrapper/wltouch.h index e1a662c59..0d63defb7 100644 --- a/src/compositor/wayland_wrapper/wltouch.h +++ b/src/compositor/wayland_wrapper/wltouch.h @@ -59,9 +59,9 @@ public: void postTouchEvent(QTouchEvent *event, Surface *surface); -private: - Compositor *m_compositor; + void setFlags(int flags) { m_flags = flags; } +private: static void bind_func(struct wl_client *client, void *data, uint32_t version, uint32_t id); @@ -69,6 +69,8 @@ private: static const struct wl_touch_extension_interface touch_interface; + Compositor *m_compositor; + int m_flags; QList<wl_resource *> m_resources; wl_array m_rawdata_array; float *m_rawdata_ptr; |