[clutter] evdev: Expose microsecond timestamps via the clutter evdev API
- From: Jonas Ådahl <jadahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [clutter] evdev: Expose microsecond timestamps via the clutter evdev API
- Date: Tue, 16 Feb 2016 11:01:36 +0000 (UTC)
commit 52e38d1ab7c0e13aee8bdd7695741faf2dbb12ef
Author: Jonas Ådahl <jadahl gmail com>
Date: Wed Dec 2 16:13:36 2015 +0800
evdev: Expose microsecond timestamps via the clutter evdev API
This is needed by Wayland compositors for certain types of events.
https://bugzilla.gnome.org/show_bug.cgi?id=752752
clutter/evdev/clutter-device-manager-evdev.c | 7 ++++++
clutter/evdev/clutter-evdev.h | 3 ++
clutter/evdev/clutter-event-evdev.c | 31 ++++++++++++++++++++++++++
clutter/evdev/clutter-input-device-evdev.h | 3 ++
4 files changed, 44 insertions(+), 0 deletions(-)
---
diff --git a/clutter/evdev/clutter-device-manager-evdev.c b/clutter/evdev/clutter-device-manager-evdev.c
index 1427dbb..53aa848 100644
--- a/clutter/evdev/clutter-device-manager-evdev.c
+++ b/clutter/evdev/clutter-device-manager-evdev.c
@@ -461,6 +461,7 @@ new_absolute_motion_event (ClutterInputDevice *input_device,
y = CLAMP (y, 0.f, stage_height - 1);
}
+ _clutter_evdev_event_set_time_usec (event, time_us);
event->motion.time = us2ms (time_us);
event->motion.stage = stage;
event->motion.device = seat->core_pointer;
@@ -572,6 +573,7 @@ notify_discrete_scroll (ClutterInputDevice *input_device,
event = clutter_event_new (CLUTTER_SCROLL);
+ _clutter_evdev_event_set_time_usec (event, time_us);
event->scroll.time = us2ms (time_us);
event->scroll.stage = CLUTTER_STAGE (stage);
event->scroll.device = seat->core_pointer;
@@ -616,6 +618,7 @@ notify_scroll (ClutterInputDevice *input_device,
event = clutter_event_new (CLUTTER_SCROLL);
+ _clutter_evdev_event_set_time_usec (event, time_us);
event->scroll.time = us2ms (time_us);
event->scroll.stage = CLUTTER_STAGE (stage);
event->scroll.device = seat->core_pointer;
@@ -708,6 +711,7 @@ notify_button (ClutterInputDevice *input_device,
else
seat->button_state &= ~maskmap[button - BTN_LEFT];
+ _clutter_evdev_event_set_time_usec (event, time_us);
event->button.time = us2ms (time_us);
event->button.stage = CLUTTER_STAGE (stage);
event->button.device = seat->core_pointer;
@@ -749,6 +753,7 @@ notify_touch_event (ClutterInputDevice *input_device,
event = clutter_event_new (evtype);
+ _clutter_evdev_event_set_time_usec (event, time_us);
event->touch.time = us2ms (time_us);
event->touch.stage = CLUTTER_STAGE (stage);
event->touch.device = seat->core_pointer;
@@ -796,6 +801,7 @@ notify_pinch_gesture_event (ClutterInputDevice *input_device,
clutter_input_device_get_coords (seat->core_pointer, NULL, &pos);
+ _clutter_evdev_event_set_time_usec (event, time_us);
event->touchpad_pinch.phase = phase;
event->touchpad_pinch.time = us2ms (time_us);
event->touchpad_pinch.stage = CLUTTER_STAGE (stage);
@@ -839,6 +845,7 @@ notify_swipe_gesture_event (ClutterInputDevice *input_device,
event = clutter_event_new (CLUTTER_TOUCHPAD_SWIPE);
+ _clutter_evdev_event_set_time_usec (event, time_us);
event->touchpad_swipe.phase = phase;
event->touchpad_swipe.time = us2ms (time_us);
event->touchpad_swipe.stage = CLUTTER_STAGE (stage);
diff --git a/clutter/evdev/clutter-evdev.h b/clutter/evdev/clutter-evdev.h
index 8278df8..dca093d 100644
--- a/clutter/evdev/clutter-evdev.h
+++ b/clutter/evdev/clutter-evdev.h
@@ -135,6 +135,9 @@ CLUTTER_AVAILABLE_IN_1_26
guint32 clutter_evdev_event_get_event_code (const ClutterEvent *event);
CLUTTER_AVAILABLE_IN_1_26
+guint64 clutter_evdev_event_get_time_usec (const ClutterEvent *event);
+
+CLUTTER_AVAILABLE_IN_1_26
gboolean clutter_evdev_event_get_relative_motion (const ClutterEvent *event,
double *dx,
double *dy,
diff --git a/clutter/evdev/clutter-event-evdev.c b/clutter/evdev/clutter-event-evdev.c
index a0d66c9..c80a642 100644
--- a/clutter/evdev/clutter-event-evdev.c
+++ b/clutter/evdev/clutter-event-evdev.c
@@ -33,6 +33,8 @@ struct _ClutterEventEvdev
{
guint32 evcode;
+ guint64 time_usec;
+
gboolean has_relative_motion;
double dx;
double dy;
@@ -87,6 +89,16 @@ _clutter_evdev_event_set_event_code (ClutterEvent *event,
}
void
+_clutter_evdev_event_set_time_usec (ClutterEvent *event,
+ guint64 time_usec)
+{
+ ClutterEventEvdev *event_evdev;
+
+ event_evdev = clutter_evdev_event_ensure_platform_data (event);
+ event_evdev->time_usec = time_usec;
+}
+
+void
_clutter_evdev_event_set_relative_motion (ClutterEvent *event,
double dx,
double dy,
@@ -124,6 +136,25 @@ clutter_evdev_event_get_event_code (const ClutterEvent *event)
}
/**
+ * clutter_evdev_event_get_time_usec:
+ * @event: a #ClutterEvent
+ *
+ * Returns the time in microsecond granularity, or 0 if unavailable.
+ *
+ * Returns: The time in microsecond granularity, or 0 if unavailable.
+ */
+guint64
+clutter_evdev_event_get_time_usec (const ClutterEvent *event)
+{
+ ClutterEventEvdev *event_evdev = _clutter_event_get_platform_data (event);
+
+ if (event_evdev)
+ return event_evdev->time_usec;
+
+ return 0;
+}
+
+/**
* clutter_evdev_event_get_pointer_motion
* @event: a #ClutterEvent
*
diff --git a/clutter/evdev/clutter-input-device-evdev.h b/clutter/evdev/clutter-input-device-evdev.h
index dec3739..c5c3eff 100644
--- a/clutter/evdev/clutter-input-device-evdev.h
+++ b/clutter/evdev/clutter-input-device-evdev.h
@@ -91,6 +91,9 @@ void _clutter_event_evdev_free (ClutterEv
void _clutter_evdev_event_set_event_code (ClutterEvent *event,
guint32 evcode);
+void _clutter_evdev_event_set_time_usec (ClutterEvent *event,
+ guint64 time_usec);
+
void _clutter_evdev_event_set_relative_motion (ClutterEvent *event,
double dx,
double dy,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]