| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ui/events/x/device_data_manager_x11.h" | 5 #include "ui/events/devices/x11/device_data_manager_x11.h" |
| 6 | 6 |
| 7 #include <X11/extensions/XInput.h> | 7 #include <X11/extensions/XInput.h> |
| 8 #include <X11/extensions/XInput2.h> | 8 #include <X11/extensions/XInput2.h> |
| 9 #include <X11/Xlib.h> | 9 #include <X11/Xlib.h> |
| 10 | 10 |
| 11 #include <utility> | 11 #include <utility> |
| 12 | 12 |
| 13 #include "base/logging.h" | 13 #include "base/logging.h" |
| 14 #include "base/memory/singleton.h" | 14 #include "base/memory/singleton.h" |
| 15 #include "base/sys_info.h" | 15 #include "base/sys_info.h" |
| 16 #include "ui/events/devices/keyboard_device.h" |
| 17 #include "ui/events/devices/x11/device_list_cache_x11.h" |
| 18 #include "ui/events/devices/x11/touch_factory_x11.h" |
| 16 #include "ui/events/event_constants.h" | 19 #include "ui/events/event_constants.h" |
| 17 #include "ui/events/event_switches.h" | 20 #include "ui/events/event_switches.h" |
| 18 #include "ui/events/keyboard_device.h" | |
| 19 #include "ui/events/keycodes/keyboard_code_conversion_x.h" | 21 #include "ui/events/keycodes/keyboard_code_conversion_x.h" |
| 20 #include "ui/events/x/device_list_cache_x.h" | |
| 21 #include "ui/events/x/touch_factory_x11.h" | |
| 22 #include "ui/gfx/display.h" | 22 #include "ui/gfx/display.h" |
| 23 #include "ui/gfx/point3_f.h" | 23 #include "ui/gfx/point3_f.h" |
| 24 #include "ui/gfx/x/x11_types.h" | 24 #include "ui/gfx/x/x11_types.h" |
| 25 | 25 |
| 26 // XIScrollClass was introduced in XI 2.1 so we need to define it here | 26 // XIScrollClass was introduced in XI 2.1 so we need to define it here |
| 27 // for backward-compatibility with older versions of XInput. | 27 // for backward-compatibility with older versions of XInput. |
| 28 #if !defined(XIScrollClass) | 28 #if !defined(XIScrollClass) |
| 29 #define XIScrollClass 3 | 29 #define XIScrollClass 3 |
| 30 #endif | 30 #endif |
| 31 | 31 |
| (...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 213 valuator_lookup_[i].clear(); | 213 valuator_lookup_[i].clear(); |
| 214 data_type_lookup_[i].clear(); | 214 data_type_lookup_[i].clear(); |
| 215 valuator_min_[i].clear(); | 215 valuator_min_[i].clear(); |
| 216 valuator_max_[i].clear(); | 216 valuator_max_[i].clear(); |
| 217 for (int j = 0; j < kMaxSlotNum; j++) | 217 for (int j = 0; j < kMaxSlotNum; j++) |
| 218 last_seen_valuator_[i][j].clear(); | 218 last_seen_valuator_[i][j].clear(); |
| 219 } | 219 } |
| 220 | 220 |
| 221 // Find all the touchpad devices. | 221 // Find all the touchpad devices. |
| 222 XDeviceList dev_list = | 222 XDeviceList dev_list = |
| 223 ui::DeviceListCacheX::GetInstance()->GetXDeviceList(display); | 223 ui::DeviceListCacheX11::GetInstance()->GetXDeviceList(display); |
| 224 Atom xi_touchpad = XInternAtom(display, XI_TOUCHPAD, false); | 224 Atom xi_touchpad = XInternAtom(display, XI_TOUCHPAD, false); |
| 225 for (int i = 0; i < dev_list.count; ++i) | 225 for (int i = 0; i < dev_list.count; ++i) |
| 226 if (dev_list[i].type == xi_touchpad) | 226 if (dev_list[i].type == xi_touchpad) |
| 227 touchpads_[dev_list[i].id] = true; | 227 touchpads_[dev_list[i].id] = true; |
| 228 | 228 |
| 229 if (!IsXInput2Available()) | 229 if (!IsXInput2Available()) |
| 230 return; | 230 return; |
| 231 | 231 |
| 232 // Update the structs with new valuator information | 232 // Update the structs with new valuator information |
| 233 XIDeviceList info_list = | 233 XIDeviceList info_list = |
| 234 ui::DeviceListCacheX::GetInstance()->GetXI2DeviceList(display); | 234 ui::DeviceListCacheX11::GetInstance()->GetXI2DeviceList(display); |
| 235 Atom atoms[DT_LAST_ENTRY]; | 235 Atom atoms[DT_LAST_ENTRY]; |
| 236 for (int data_type = 0; data_type < DT_LAST_ENTRY; ++data_type) | 236 for (int data_type = 0; data_type < DT_LAST_ENTRY; ++data_type) |
| 237 atoms[data_type] = atom_cache_.GetAtom(kCachedAtoms[data_type]); | 237 atoms[data_type] = atom_cache_.GetAtom(kCachedAtoms[data_type]); |
| 238 | 238 |
| 239 for (int i = 0; i < info_list.count; ++i) { | 239 for (int i = 0; i < info_list.count; ++i) { |
| 240 XIDeviceInfo* info = info_list.devices + i; | 240 XIDeviceInfo* info = info_list.devices + i; |
| 241 | 241 |
| 242 // We currently handle only slave, non-keyboard devices | 242 // We currently handle only slave, non-keyboard devices |
| 243 if (info->use != XISlavePointer && info->use != XIFloatingSlave) | 243 if (info->use != XISlavePointer && info->use != XIFloatingSlave) |
| 244 continue; | 244 continue; |
| (...skipping 515 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 760 } else { | 760 } else { |
| 761 keyboards.erase(it); | 761 keyboards.erase(it); |
| 762 ++blocked_iter; | 762 ++blocked_iter; |
| 763 } | 763 } |
| 764 } | 764 } |
| 765 // Notify base class of updated list. | 765 // Notify base class of updated list. |
| 766 DeviceDataManager::OnKeyboardDevicesUpdated(keyboards); | 766 DeviceDataManager::OnKeyboardDevicesUpdated(keyboards); |
| 767 } | 767 } |
| 768 | 768 |
| 769 } // namespace ui | 769 } // namespace ui |
| OLD | NEW |