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); }