Index: ui/events/devices/x11/device_data_manager_x11.cc |
diff --git a/ui/events/devices/x11/device_data_manager_x11.cc b/ui/events/devices/x11/device_data_manager_x11.cc |
index 9d83afe1e34c98dbdaa8e91337c4b4818b295d6e..580e7dd9fc13d42e2fddbe37df985c565df6fa4e 100644 |
--- a/ui/events/devices/x11/device_data_manager_x11.cc |
+++ b/ui/events/devices/x11/device_data_manager_x11.cc |
@@ -771,6 +771,16 @@ void DeviceDataManagerX11::UpdateScrollClassDevice( |
int deviceid) { |
DCHECK(deviceid >= 0 && deviceid < kMaxDeviceNum); |
ScrollInfo& info = scroll_data_[deviceid]; |
+ |
+ bool legacy_scroll_available = |
+ (scroll_class_info->flags & XIScrollFlagNoEmulation) == 0; |
+ // If the device's highest resolution is lower than the resolution of xinput1 |
+ // then use that. |
sadrul
2016/04/22 02:42:23
s/then use that/then use the xinput1 resolution in
Will Shackleton
2016/04/22 14:56:55
Done.
|
+ if (legacy_scroll_available && |
+ std::abs(scroll_class_info->increment) <= 1.0) { |
+ return; |
sadrul
2016/04/22 02:42:22
Does this need to reset some state of |info|?
Will Shackleton
2016/04/22 14:56:55
No - the |info| fields are reset upon call to this
|
+ } |
+ |
switch (scroll_class_info->scroll_type) { |
case XIScrollTypeVertical: |
info.vertical.number = scroll_class_info->number; |