summaryrefslogtreecommitdiffstats
path: root/src/compositor/wayland_wrapper
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.p.agocs@nokia.com>2012-02-07 11:39:49 +0200
committerJørgen Lind <jorgen.lind@nokia.com>2012-02-07 16:16:52 +0100
commit083ece74feedb93c0ed208017658c85a4bb1e532 (patch)
tree430cd31526d56e838df38a24e344e91b789e1223 /src/compositor/wayland_wrapper
parenta39e37100a86aa64a6463c36d5a6444df01ec169 (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.cpp6
-rw-r--r--src/compositor/wayland_wrapper/wlcompositor.h1
-rw-r--r--src/compositor/wayland_wrapper/wltouch.cpp4
-rw-r--r--src/compositor/wayland_wrapper/wltouch.h6
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;