Index: ui/events/x/events_x_utils.cc |
diff --git a/ui/events/x/events_x_utils.cc b/ui/events/x/events_x_utils.cc |
index 27a49494041aec39f027f20cbb1de75758436c9a..be04deebaddd2b187669d106a74b2180f1240e78 100644 |
--- a/ui/events/x/events_x_utils.cc |
+++ b/ui/events/x/events_x_utils.cc |
@@ -21,6 +21,7 @@ |
#include "build/build_config.h" |
#include "ui/display/display.h" |
#include "ui/display/screen.h" |
+#include "ui/events/base_event_utils.h" |
#include "ui/events/devices/x11/device_data_manager_x11.h" |
#include "ui/events/devices/x11/device_list_cache_x11.h" |
#include "ui/events/devices/x11/touch_factory_x11.h" |
@@ -307,27 +308,22 @@ bool GetGestureTimes(const XEvent& xev, double* start_time, double* end_time) { |
return true; |
} |
-namespace { |
int64_t g_last_seen_timestamp_ms = 0; |
int64_t g_rollover_ms = 0; |
bool g_bogus_x11_timestamps = false; |
base::LazyInstance<std::unique_ptr<base::TickClock>>::Leaky g_tick_clock = |
LAZY_INSTANCE_INITIALIZER; |
-} // namespace |
- |
// Takes Xlib Time and returns a time delta that is immune to timer rollover. |
// This function is not thread safe as we do not use a lock. |
-base::TimeDelta TimeDeltaFromXEventTime(Time timestamp) { |
+base::TimeTicks TimeTicksFromXEventTime(Time timestamp) { |
int64_t timestamp64 = timestamp; |
if (!timestamp) |
- return base::TimeDelta(); |
+ return base::TimeTicks(); |
- if (g_bogus_x11_timestamps) { |
- return base::TimeDelta::FromInternalValue( |
- base::TimeTicks::Now().ToInternalValue()); |
- } |
+ if (g_bogus_x11_timestamps) |
+ return base::TimeTicks::Now(); |
// If this is the first event that we get, assume the time stamp roll-over |
// might have happened before the process was started. |
@@ -340,7 +336,8 @@ base::TimeDelta TimeDeltaFromXEventTime(Time timestamp) { |
g_last_seen_timestamp_ms = timestamp64; |
if (!had_recent_rollover) |
- return base::TimeDelta::FromMilliseconds(g_rollover_ms + timestamp); |
+ return base::TimeTicks() + |
+ base::TimeDelta::FromMilliseconds(g_rollover_ms + timestamp); |
DCHECK(timestamp64 <= UINT32_MAX) |
<< "X11 Time does not roll over 32 bit, the below logic is likely wrong"; |
@@ -365,7 +362,7 @@ base::TimeDelta TimeDeltaFromXEventTime(Time timestamp) { |
!g_bogus_x11_timestamps); |
} |
- return base::TimeDelta::FromMilliseconds(now_ms - delta); |
+ return base::TimeTicks() + base::TimeDelta::FromMilliseconds(now_ms - delta); |
} |
} // namespace |
@@ -541,41 +538,41 @@ int EventFlagsFromXEvent(const XEvent& xev) { |
return 0; |
} |
-base::TimeDelta EventTimeFromXEvent(const XEvent& xev) { |
+base::TimeTicks EventTimeFromXEvent(const XEvent& xev) { |
switch (xev.type) { |
case KeyPress: |
case KeyRelease: |
- return TimeDeltaFromXEventTime(xev.xkey.time); |
+ return TimeTicksFromXEventTime(xev.xkey.time); |
case ButtonPress: |
case ButtonRelease: |
- return TimeDeltaFromXEventTime(xev.xbutton.time); |
+ return TimeTicksFromXEventTime(xev.xbutton.time); |
break; |
case MotionNotify: |
- return TimeDeltaFromXEventTime(xev.xmotion.time); |
+ return TimeTicksFromXEventTime(xev.xmotion.time); |
break; |
case EnterNotify: |
case LeaveNotify: |
- return TimeDeltaFromXEventTime(xev.xcrossing.time); |
+ return TimeTicksFromXEventTime(xev.xcrossing.time); |
break; |
case GenericEvent: { |
double start, end; |
double touch_timestamp; |
if (GetGestureTimes(xev, &start, &end)) { |
// If the driver supports gesture times, use them. |
- return base::TimeDelta::FromMicroseconds(end * 1000000); |
+ return ui::EventTimeStampFromSeconds(end); |
} else if (DeviceDataManagerX11::GetInstance()->GetEventData( |
xev, DeviceDataManagerX11::DT_TOUCH_RAW_TIMESTAMP, |
&touch_timestamp)) { |
- return base::TimeDelta::FromMicroseconds(touch_timestamp * 1000000); |
+ return ui::EventTimeStampFromSeconds(touch_timestamp); |
} else { |
XIDeviceEvent* xide = static_cast<XIDeviceEvent*>(xev.xcookie.data); |
- return TimeDeltaFromXEventTime(xide->time); |
+ return TimeTicksFromXEventTime(xide->time); |
} |
break; |
} |
} |
NOTREACHED(); |
- return base::TimeDelta(); |
+ return base::TimeTicks(); |
} |
gfx::Point EventLocationFromXEvent(const XEvent& xev) { |