summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--clutter/clutter/clutter-event.c8
-rw-r--r--clutter/clutter/clutter-event.h3
-rw-r--r--src/backends/native/meta-event-native.c20
-rw-r--r--src/backends/native/meta-event-native.h2
-rw-r--r--src/backends/native/meta-seat-impl.c2
-rw-r--r--src/backends/x11/meta-backend-x11.c2
-rw-r--r--src/backends/x11/meta-event-x11.c8
-rw-r--r--src/backends/x11/meta-event-x11.h2
-rw-r--r--src/backends/x11/meta-seat-x11.c6
-rw-r--r--src/wayland/meta-wayland-touch.c2
10 files changed, 18 insertions, 37 deletions
diff --git a/clutter/clutter/clutter-event.c b/clutter/clutter/clutter-event.c
index 793884f00..19ec29f32 100644
--- a/clutter/clutter/clutter-event.c
+++ b/clutter/clutter/clutter-event.c
@@ -2134,3 +2134,11 @@ clutter_event_get_event_code (const ClutterEvent *event)
return 0;
}
+
+int32_t
+clutter_event_sequence_get_slot (const ClutterEventSequence *sequence)
+{
+ g_return_val_if_fail (sequence != NULL, -1);
+
+ return GPOINTER_TO_INT (sequence) - 1;
+}
diff --git a/clutter/clutter/clutter-event.h b/clutter/clutter/clutter-event.h
index 5ff8ae8f9..7c3d36463 100644
--- a/clutter/clutter/clutter-event.h
+++ b/clutter/clutter/clutter-event.h
@@ -788,6 +788,9 @@ gboolean clutter_event_get_pad_event_details (const Clut
CLUTTER_EXPORT
uint32_t clutter_event_get_event_code (const ClutterEvent *event);
+CLUTTER_EXPORT
+int32_t clutter_event_sequence_get_slot (const ClutterEventSequence *sequence);
+
G_END_DECLS
#endif /* __CLUTTER_EVENT_H__ */
diff --git a/src/backends/native/meta-event-native.c b/src/backends/native/meta-event-native.c
index b7e719468..8d59e6287 100644
--- a/src/backends/native/meta-event-native.c
+++ b/src/backends/native/meta-event-native.c
@@ -154,23 +154,3 @@ meta_event_native_get_relative_motion (const ClutterEvent *event,
else
return FALSE;
}
-
-/**
- * meta_event_native_sequence_get_slot:
- * @sequence: a #ClutterEventSequence
- *
- * Retrieves the touch slot triggered by this @sequence
- *
- * Returns: the libinput touch slot.
- *
- * Since: 1.20
- * Stability: unstable
- **/
-int32_t
-meta_event_native_sequence_get_slot (const ClutterEventSequence *sequence)
-{
- if (!sequence)
- return -1;
-
- return GPOINTER_TO_INT (sequence) - 1;
-}
diff --git a/src/backends/native/meta-event-native.h b/src/backends/native/meta-event-native.h
index fc546530a..43cf7b929 100644
--- a/src/backends/native/meta-event-native.h
+++ b/src/backends/native/meta-event-native.h
@@ -42,6 +42,4 @@ gboolean meta_event_native_get_relative_motion (const ClutterEvent *eve
double *dx_unaccel,
double *dy_unaccel);
-int32_t meta_event_native_sequence_get_slot (const ClutterEventSequence *sequence);
-
#endif /* META_EVENT_NATIVE_H */
diff --git a/src/backends/native/meta-seat-impl.c b/src/backends/native/meta-seat-impl.c
index 033a9e3df..bc68e0e99 100644
--- a/src/backends/native/meta-seat-impl.c
+++ b/src/backends/native/meta-seat-impl.c
@@ -2890,7 +2890,7 @@ meta_seat_impl_query_state (MetaSeatImpl *seat_impl,
MetaTouchState *touch_state;
int slot;
- slot = meta_event_native_sequence_get_slot (sequence);
+ slot = clutter_event_sequence_get_slot (sequence);
touch_state = meta_seat_impl_lookup_touch_state_in_impl (seat_impl, slot);
if (!touch_state)
goto out;
diff --git a/src/backends/x11/meta-backend-x11.c b/src/backends/x11/meta-backend-x11.c
index 94a13e7cd..f79b0d6d4 100644
--- a/src/backends/x11/meta-backend-x11.c
+++ b/src/backends/x11/meta-backend-x11.c
@@ -691,7 +691,7 @@ meta_backend_x11_finish_touch_sequence (MetaBackend *backend,
XIAllowTouchEvents (priv->xdisplay,
META_VIRTUAL_CORE_POINTER_ID,
- meta_x11_event_sequence_get_touch_detail (sequence),
+ clutter_event_sequence_get_slot (sequence),
DefaultRootWindow (priv->xdisplay), event_mode);
if (state == META_SEQUENCE_REJECTED)
diff --git a/src/backends/x11/meta-event-x11.c b/src/backends/x11/meta-event-x11.c
index 8217e3db7..fa287ead3 100644
--- a/src/backends/x11/meta-event-x11.c
+++ b/src/backends/x11/meta-event-x11.c
@@ -113,11 +113,3 @@ out:
return result;
}
-
-guint
-meta_x11_event_sequence_get_touch_detail (const ClutterEventSequence *sequence)
-{
- g_return_val_if_fail (sequence != NULL, 0);
-
- return GPOINTER_TO_UINT (sequence);
-}
diff --git a/src/backends/x11/meta-event-x11.h b/src/backends/x11/meta-event-x11.h
index 6e0b54eee..ceb363ab0 100644
--- a/src/backends/x11/meta-event-x11.h
+++ b/src/backends/x11/meta-event-x11.h
@@ -28,8 +28,6 @@
#include "clutter/x11/clutter-x11.h"
-guint meta_x11_event_sequence_get_touch_detail (const ClutterEventSequence *sequence);
-
ClutterX11FilterReturn meta_x11_handle_event (XEvent *xevent);
#endif /* META_EVENT_X11_H */
diff --git a/src/backends/x11/meta-seat-x11.c b/src/backends/x11/meta-seat-x11.c
index 1fea4553a..b04da4a97 100644
--- a/src/backends/x11/meta-seat-x11.c
+++ b/src/backends/x11/meta-seat-x11.c
@@ -2213,7 +2213,8 @@ meta_seat_x11_translate_event (MetaSeatX11 *seat,
GUINT_TO_POINTER (xev->detail));
}
- event->touch.sequence = GUINT_TO_POINTER (xev->detail);
+ /* "NULL" sequences are special cased in clutter */
+ event->touch.sequence = GINT_TO_POINTER (MAX (1, xev->detail + 1));
if (xev->flags & XITouchEmulatingPointer)
_clutter_event_set_pointer_emulated (event, TRUE);
@@ -2242,7 +2243,8 @@ meta_seat_x11_translate_event (MetaSeatX11 *seat,
event->touch.type = event->type = CLUTTER_TOUCH_UPDATE;
event->touch.stage = stage;
event->touch.time = xev->time;
- event->touch.sequence = GUINT_TO_POINTER (xev->detail);
+ /* "NULL" sequences are special cased in clutter */
+ event->touch.sequence = GINT_TO_POINTER (MAX (1, xev->detail + 1));
translate_coords (stage_x11, xev->event_x, xev->event_y, &event->touch.x, &event->touch.y);
clutter_event_set_source_device (event, source_device);
diff --git a/src/wayland/meta-wayland-touch.c b/src/wayland/meta-wayland-touch.c
index bf11fc590..147c3845e 100644
--- a/src/wayland/meta-wayland-touch.c
+++ b/src/wayland/meta-wayland-touch.c
@@ -188,7 +188,7 @@ touch_get_info (MetaWaylandTouch *touch,
if (!touch_info && create)
{
touch_info = g_new0 (MetaWaylandTouchInfo, 1);
- touch_info->slot = meta_event_native_sequence_get_slot (sequence);
+ touch_info->slot = clutter_event_sequence_get_slot (sequence);
g_hash_table_insert (touch->touches, sequence, touch_info);
}