[mutter] wayland/touch: Only handle touch when using the native backend
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] wayland/touch: Only handle touch when using the native backend
- Date: Tue, 6 Nov 2018 18:08:20 +0000 (UTC)
commit 6192e944b87fa97bca3834bfb333dca9d707d979
Author: Jonas Ã…dahl <jadahl gmail com>
Date: Fri Aug 17 13:59:12 2018 +0200
wayland/touch: Only handle touch when using the native backend
The touch handling code uses evdev API, thus will not work on other
backends. Thus, put touch handling code behind runtime backend checks
and only include the code when native backend support is enabled.
src/wayland/meta-wayland-touch.c | 38 ++++++++++++++++++++++++++++++++++----
1 file changed, 34 insertions(+), 4 deletions(-)
---
diff --git a/src/wayland/meta-wayland-touch.c b/src/wayland/meta-wayland-touch.c
index 93ba4a7ef..01ed9b015 100644
--- a/src/wayland/meta-wayland-touch.c
+++ b/src/wayland/meta-wayland-touch.c
@@ -59,6 +59,7 @@ struct _MetaWaylandTouchInfo
guint begin_delivered : 1;
};
+#ifdef HAVE_NATIVE_BACKEND
static void
move_resources (struct wl_list *destination, struct wl_list *source)
{
@@ -207,11 +208,13 @@ touch_get_relative_coordinates (MetaWaylandTouch *touch,
event_x, event_y,
x, y);
}
+#endif /* HAVE_NATIVE_BACKEND */
void
meta_wayland_touch_update (MetaWaylandTouch *touch,
const ClutterEvent *event)
{
+#ifdef HAVE_NATIVE_BACKEND
MetaWaylandTouchInfo *touch_info;
ClutterEventSequence *sequence;
@@ -252,12 +255,14 @@ meta_wayland_touch_update (MetaWaylandTouch *touch,
touch_get_relative_coordinates (touch, touch_info->touch_surface->surface,
event, &touch_info->x, &touch_info->y);
touch_info->updated = TRUE;
+#endif /* HAVE_NATIVE_BACKEND */
}
static void
handle_touch_begin (MetaWaylandTouch *touch,
const ClutterEvent *event)
{
+#ifdef HAVE_NATIVE_BACKEND
MetaWaylandTouchInfo *touch_info;
ClutterEventSequence *sequence;
struct wl_resource *resource;
@@ -281,12 +286,14 @@ handle_touch_begin (MetaWaylandTouch *touch,
}
touch_info->begin_delivered = TRUE;
+#endif /* HAVE_NATIVE_BACKEND */
}
static void
handle_touch_update (MetaWaylandTouch *touch,
const ClutterEvent *event)
{
+#ifdef HAVE_NATIVE_BACKEND
MetaWaylandTouchInfo *touch_info;
ClutterEventSequence *sequence;
struct wl_resource *resource;
@@ -307,12 +314,14 @@ handle_touch_update (MetaWaylandTouch *touch,
wl_fixed_from_double (touch_info->x),
wl_fixed_from_double (touch_info->y));
}
+#endif /* HAVE_NATIVE_BACKEND */
}
static void
handle_touch_end (MetaWaylandTouch *touch,
const ClutterEvent *event)
{
+#ifdef HAVE_NATIVE_BACKEND
MetaWaylandTouchInfo *touch_info;
ClutterEventSequence *sequence;
struct wl_resource *resource;
@@ -336,6 +345,7 @@ handle_touch_end (MetaWaylandTouch *touch,
}
g_hash_table_remove (touch->touches, sequence);
+#endif /* HAVE_NATIVE_BACKEND */
}
static GList *
@@ -389,14 +399,30 @@ static void
check_send_frame_event (MetaWaylandTouch *touch,
const ClutterEvent *event)
{
+ gboolean send_frame_event;
+#ifdef HAVE_NATIVE_BACKEND
+ MetaBackend *backend = meta_get_backend ();
ClutterEventSequence *sequence;
gint32 slot;
- sequence = clutter_event_get_event_sequence (event);
- slot = clutter_evdev_event_sequence_get_slot (sequence);
- touch->frame_slots &= ~(1 << slot);
+ if (META_IS_BACKEND_NATIVE (backend))
+ {
+ sequence = clutter_event_get_event_sequence (event);
+ slot = clutter_evdev_event_sequence_get_slot (sequence);
+ touch->frame_slots &= ~(1 << slot);
+
+ if (touch->frame_slots == 0)
+ send_frame_event = TRUE;
+ else
+ send_frame_event = FALSE;
+ }
+ else
+#endif /* HAVE_NATIVE_BACKEND */
+ {
+ send_frame_event = TRUE;
+ }
- if (touch->frame_slots == 0)
+ if (send_frame_event)
touch_send_frame_event (touch);
}
@@ -443,12 +469,14 @@ static const struct wl_touch_interface touch_interface = {
touch_release,
};
+#ifdef HAVE_NATIVE_BACKEND
static void
touch_info_free (MetaWaylandTouchInfo *touch_info)
{
touch_surface_decrement_touch (touch_info->touch_surface);
g_free (touch_info);
}
+#endif /* HAVE_NATIVE_BACKEND */
void
meta_wayland_touch_cancel (MetaWaylandTouch *touch)
@@ -521,10 +549,12 @@ meta_wayland_touch_enable (MetaWaylandTouch *touch)
{
ClutterDeviceManager *manager;
+#ifdef HAVE_NATIVE_BACKEND
touch->touch_surfaces = g_hash_table_new_full (NULL, NULL, NULL,
(GDestroyNotify) touch_surface_free);
touch->touches = g_hash_table_new_full (NULL, NULL, NULL,
(GDestroyNotify) touch_info_free);
+#endif /* HAVE_NATIVE_BACKEND */
wl_list_init (&touch->resource_list);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]