Index: ui/events/ozone/evdev/event_factory_evdev.cc |
diff --git a/ui/events/ozone/evdev/event_factory_evdev.cc b/ui/events/ozone/evdev/event_factory_evdev.cc |
index 0895c0a14c892a30ab10253c57eed33914e88c80..71ca60d4faa2107b1c50d1764af149a0e593dea0 100644 |
--- a/ui/events/ozone/evdev/event_factory_evdev.cc |
+++ b/ui/events/ozone/evdev/event_factory_evdev.cc |
@@ -48,6 +48,7 @@ struct OpenInputDeviceParams { |
// State shared between devices. Must not be dereferenced on worker thread. |
EventModifiersEvdev* modifiers; |
+ KeyboardEvdev* keyboard; |
CursorDelegateEvdev* cursor; |
}; |
@@ -91,8 +92,8 @@ scoped_ptr<EventConverterEvdev> CreateConverter( |
fd, params.path, params.id, devinfo, params.dispatch_callback)); |
// Everything else: use KeyEventConverterEvdev. |
- return make_scoped_ptr<EventConverterEvdev>(new KeyEventConverterEvdev( |
- fd, params.path, params.id, params.modifiers, params.dispatch_callback)); |
+ return make_scoped_ptr<EventConverterEvdev>( |
+ new KeyEventConverterEvdev(fd, params.path, params.id, params.keyboard)); |
} |
// Open an input device. Opening may put the calling thread to sleep, and |
@@ -151,10 +152,11 @@ EventFactoryEvdev::EventFactoryEvdev(CursorDelegateEvdev* cursor, |
DeviceManager* device_manager) |
: last_device_id_(0), |
device_manager_(device_manager), |
- cursor_(cursor), |
dispatch_callback_( |
base::Bind(base::IgnoreResult(&EventFactoryEvdev::DispatchUiEvent), |
base::Unretained(this))), |
+ keyboard_(&modifiers_, dispatch_callback_), |
+ cursor_(cursor), |
weak_ptr_factory_(this) { |
DCHECK(device_manager_); |
} |
@@ -198,6 +200,7 @@ void EventFactoryEvdev::OnDeviceEvent(const DeviceEvent& event) { |
params->path = event.path(); |
params->dispatch_callback = dispatch_callback_; |
params->modifiers = &modifiers_; |
+ params->keyboard = &keyboard_; |
params->cursor = cursor_; |
OpenInputDeviceReplyCallback reply_callback = |