| 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/platform/x11/x11_hotplug_event_handler.h" | 5 #include "ui/events/platform/x11/x11_hotplug_event_handler.h" |
| 6 | 6 |
| 7 #include <X11/Xatom.h> | 7 #include <X11/Xatom.h> |
| 8 #include <X11/extensions/XInput.h> | 8 #include <X11/extensions/XInput.h> |
| 9 #include <X11/extensions/XInput2.h> | 9 #include <X11/extensions/XInput2.h> |
| 10 | 10 |
| (...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 218 for (const DeviceInfo& device_info : device_infos) { | 218 for (const DeviceInfo& device_info : device_infos) { |
| 219 if (!device_info.enabled || device_info.use != XISlaveKeyboard) | 219 if (!device_info.enabled || device_info.use != XISlaveKeyboard) |
| 220 continue; // Assume all keyboards are keyboard slaves | 220 continue; // Assume all keyboards are keyboard slaves |
| 221 std::string device_name(device_info.name); | 221 std::string device_name(device_info.name); |
| 222 base::TrimWhitespaceASCII(device_name, base::TRIM_TRAILING, &device_name); | 222 base::TrimWhitespaceASCII(device_name, base::TRIM_TRAILING, &device_name); |
| 223 if (IsTestKeyboard(device_name)) | 223 if (IsTestKeyboard(device_name)) |
| 224 continue; // Skip test devices. | 224 continue; // Skip test devices. |
| 225 if (IsKnownInvalidKeyboardDevice(device_name)) | 225 if (IsKnownInvalidKeyboardDevice(device_name)) |
| 226 continue; // Skip invalid devices. | 226 continue; // Skip invalid devices. |
| 227 InputDeviceType type = GetInputDeviceTypeFromPath(device_info.path); | 227 InputDeviceType type = GetInputDeviceTypeFromPath(device_info.path); |
| 228 devices.push_back( | 228 devices.push_back(KeyboardDevice(device_info.id, type)); |
| 229 KeyboardDevice(device_info.id, type, device_name)); | |
| 230 } | 229 } |
| 231 | 230 |
| 232 reply_runner->PostTask(FROM_HERE, base::Bind(callback, devices)); | 231 reply_runner->PostTask(FROM_HERE, base::Bind(callback, devices)); |
| 233 } | 232 } |
| 234 | 233 |
| 235 // Helper used to parse touchscreen information. When it is done it uses | 234 // Helper used to parse touchscreen information. When it is done it uses |
| 236 // |reply_runner| and |callback| to update the state on the UI thread. | 235 // |reply_runner| and |callback| to update the state on the UI thread. |
| 237 void HandleTouchscreenDevicesInWorker( | 236 void HandleTouchscreenDevicesInWorker( |
| 238 const std::vector<DeviceInfo>& device_infos, | 237 const std::vector<DeviceInfo>& device_infos, |
| 239 const DisplayState& display_state, | 238 const DisplayState& display_state, |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 271 | 270 |
| 272 if (device_info.touch_class_info.mode) | 271 if (device_info.touch_class_info.mode) |
| 273 is_direct_touch = device_info.touch_class_info.mode == XIDirectTouch; | 272 is_direct_touch = device_info.touch_class_info.mode == XIDirectTouch; |
| 274 | 273 |
| 275 // Touchscreens should have absolute X and Y axes, and be direct touch | 274 // Touchscreens should have absolute X and Y axes, and be direct touch |
| 276 // devices. | 275 // devices. |
| 277 if (max_x > 0.0 && max_y > 0.0 && is_direct_touch) { | 276 if (max_x > 0.0 && max_y > 0.0 && is_direct_touch) { |
| 278 InputDeviceType type = GetInputDeviceTypeFromPath(device_info.path); | 277 InputDeviceType type = GetInputDeviceTypeFromPath(device_info.path); |
| 279 // |max_x| and |max_y| are inclusive values, so we need to add 1 to get | 278 // |max_x| and |max_y| are inclusive values, so we need to add 1 to get |
| 280 // the size. | 279 // the size. |
| 281 devices.push_back( | 280 devices.push_back(TouchscreenDevice( |
| 282 TouchscreenDevice(device_info.id, type, device_info.name, | 281 device_info.id, type, gfx::Size(max_x + 1, max_y + 1), |
| 283 gfx::Size(max_x + 1, max_y + 1), | 282 device_info.touch_class_info.num_touches)); |
| 284 device_info.touch_class_info.num_touches)); | |
| 285 } | 283 } |
| 286 } | 284 } |
| 287 | 285 |
| 288 reply_runner->PostTask(FROM_HERE, base::Bind(callback, devices)); | 286 reply_runner->PostTask(FROM_HERE, base::Bind(callback, devices)); |
| 289 } | 287 } |
| 290 | 288 |
| 291 // Called on a worker thread to parse the device information. | 289 // Called on a worker thread to parse the device information. |
| 292 void HandleHotplugEventInWorker( | 290 void HandleHotplugEventInWorker( |
| 293 const std::vector<DeviceInfo>& devices, | 291 const std::vector<DeviceInfo>& devices, |
| 294 const DisplayState& display_state, | 292 const DisplayState& display_state, |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 349 base::WorkerPool::PostTask(FROM_HERE, | 347 base::WorkerPool::PostTask(FROM_HERE, |
| 350 base::Bind(&HandleHotplugEventInWorker, | 348 base::Bind(&HandleHotplugEventInWorker, |
| 351 device_infos, | 349 device_infos, |
| 352 display_state, | 350 display_state, |
| 353 base::ThreadTaskRunnerHandle::Get(), | 351 base::ThreadTaskRunnerHandle::Get(), |
| 354 callbacks), | 352 callbacks), |
| 355 true /* task_is_slow */); | 353 true /* task_is_slow */); |
| 356 } | 354 } |
| 357 | 355 |
| 358 } // namespace ui | 356 } // namespace ui |
| OLD | NEW |