Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(159)

Side by Side Diff: ui/events/ozone/evdev/event_factory_evdev.cc

Issue 641113004: ozone: evdev: Factor keyboard into KeyboardEvdev (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: std::bitset Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/ozone/evdev/event_factory_evdev.h" 5 #include "ui/events/ozone/evdev/event_factory_evdev.h"
6 6
7 #include <fcntl.h> 7 #include <fcntl.h>
8 #include <linux/input.h> 8 #include <linux/input.h>
9 9
10 #include "base/debug/trace_event.h" 10 #include "base/debug/trace_event.h"
(...skipping 30 matching lines...) Expand all
41 int id; 41 int id;
42 42
43 // Device path to open. 43 // Device path to open.
44 base::FilePath path; 44 base::FilePath path;
45 45
46 // Callback for dispatching events. Call on UI thread only. 46 // Callback for dispatching events. Call on UI thread only.
47 EventDispatchCallback dispatch_callback; 47 EventDispatchCallback dispatch_callback;
48 48
49 // State shared between devices. Must not be dereferenced on worker thread. 49 // State shared between devices. Must not be dereferenced on worker thread.
50 EventModifiersEvdev* modifiers; 50 EventModifiersEvdev* modifiers;
51 KeyboardEvdev* keyboard;
51 CursorDelegateEvdev* cursor; 52 CursorDelegateEvdev* cursor;
52 }; 53 };
53 54
54 #if defined(USE_EVDEV_GESTURES) 55 #if defined(USE_EVDEV_GESTURES)
55 bool UseGesturesLibraryForDevice(const EventDeviceInfo& devinfo) { 56 bool UseGesturesLibraryForDevice(const EventDeviceInfo& devinfo) {
56 if (devinfo.HasAbsXY() && !devinfo.IsMappedToScreen()) 57 if (devinfo.HasAbsXY() && !devinfo.IsMappedToScreen())
57 return true; // touchpad 58 return true; // touchpad
58 59
59 if (devinfo.HasRelXY()) 60 if (devinfo.HasRelXY())
60 return true; // mouse 61 return true; // mouse
(...skipping 23 matching lines...) Expand all
84 } 85 }
85 #endif 86 #endif
86 87
87 // Touchscreen: use TouchEventConverterEvdev. 88 // Touchscreen: use TouchEventConverterEvdev.
88 scoped_ptr<EventConverterEvdev> converter; 89 scoped_ptr<EventConverterEvdev> converter;
89 if (devinfo.HasAbsXY()) 90 if (devinfo.HasAbsXY())
90 return make_scoped_ptr<EventConverterEvdev>(new TouchEventConverterEvdev( 91 return make_scoped_ptr<EventConverterEvdev>(new TouchEventConverterEvdev(
91 fd, params.path, params.id, devinfo, params.dispatch_callback)); 92 fd, params.path, params.id, devinfo, params.dispatch_callback));
92 93
93 // Everything else: use KeyEventConverterEvdev. 94 // Everything else: use KeyEventConverterEvdev.
94 return make_scoped_ptr<EventConverterEvdev>(new KeyEventConverterEvdev( 95 return make_scoped_ptr<EventConverterEvdev>(
95 fd, params.path, params.id, params.modifiers, params.dispatch_callback)); 96 new KeyEventConverterEvdev(fd, params.path, params.id, params.keyboard));
96 } 97 }
97 98
98 // Open an input device. Opening may put the calling thread to sleep, and 99 // Open an input device. Opening may put the calling thread to sleep, and
99 // therefore should be run on a thread where latency is not critical. We 100 // therefore should be run on a thread where latency is not critical. We
100 // run it on a thread from the worker pool. 101 // run it on a thread from the worker pool.
101 // 102 //
102 // This takes a TaskRunner and runs the reply on that thread, so that we 103 // This takes a TaskRunner and runs the reply on that thread, so that we
103 // can hop threads if necessary (back to the UI thread). 104 // can hop threads if necessary (back to the UI thread).
104 void OpenInputDevice(scoped_ptr<OpenInputDeviceParams> params, 105 void OpenInputDevice(scoped_ptr<OpenInputDeviceParams> params,
105 scoped_refptr<base::TaskRunner> reply_runner, 106 scoped_refptr<base::TaskRunner> reply_runner,
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 TRACE_EVENT1("ozone", "CloseInputDevice", "path", path.value()); 145 TRACE_EVENT1("ozone", "CloseInputDevice", "path", path.value());
145 converter.reset(); 146 converter.reset();
146 } 147 }
147 148
148 } // namespace 149 } // namespace
149 150
150 EventFactoryEvdev::EventFactoryEvdev(CursorDelegateEvdev* cursor, 151 EventFactoryEvdev::EventFactoryEvdev(CursorDelegateEvdev* cursor,
151 DeviceManager* device_manager) 152 DeviceManager* device_manager)
152 : last_device_id_(0), 153 : last_device_id_(0),
153 device_manager_(device_manager), 154 device_manager_(device_manager),
154 cursor_(cursor),
155 dispatch_callback_( 155 dispatch_callback_(
156 base::Bind(base::IgnoreResult(&EventFactoryEvdev::DispatchUiEvent), 156 base::Bind(base::IgnoreResult(&EventFactoryEvdev::DispatchUiEvent),
157 base::Unretained(this))), 157 base::Unretained(this))),
158 keyboard_(&modifiers_, dispatch_callback_),
159 cursor_(cursor),
158 weak_ptr_factory_(this) { 160 weak_ptr_factory_(this) {
159 DCHECK(device_manager_); 161 DCHECK(device_manager_);
160 } 162 }
161 163
162 EventFactoryEvdev::~EventFactoryEvdev() { STLDeleteValues(&converters_); } 164 EventFactoryEvdev::~EventFactoryEvdev() { STLDeleteValues(&converters_); }
163 165
164 void EventFactoryEvdev::DispatchUiEvent(Event* event) { 166 void EventFactoryEvdev::DispatchUiEvent(Event* event) {
165 DispatchEvent(event); 167 DispatchEvent(event);
166 } 168 }
167 169
(...skipping 23 matching lines...) Expand all
191 switch (event.action_type()) { 193 switch (event.action_type()) {
192 case DeviceEvent::ADD: 194 case DeviceEvent::ADD:
193 case DeviceEvent::CHANGE: { 195 case DeviceEvent::CHANGE: {
194 TRACE_EVENT1("ozone", "OnDeviceAdded", "path", event.path().value()); 196 TRACE_EVENT1("ozone", "OnDeviceAdded", "path", event.path().value());
195 197
196 scoped_ptr<OpenInputDeviceParams> params(new OpenInputDeviceParams); 198 scoped_ptr<OpenInputDeviceParams> params(new OpenInputDeviceParams);
197 params->id = NextDeviceId(); 199 params->id = NextDeviceId();
198 params->path = event.path(); 200 params->path = event.path();
199 params->dispatch_callback = dispatch_callback_; 201 params->dispatch_callback = dispatch_callback_;
200 params->modifiers = &modifiers_; 202 params->modifiers = &modifiers_;
203 params->keyboard = &keyboard_;
201 params->cursor = cursor_; 204 params->cursor = cursor_;
202 205
203 OpenInputDeviceReplyCallback reply_callback = 206 OpenInputDeviceReplyCallback reply_callback =
204 base::Bind(&EventFactoryEvdev::AttachInputDevice, 207 base::Bind(&EventFactoryEvdev::AttachInputDevice,
205 weak_ptr_factory_.GetWeakPtr()); 208 weak_ptr_factory_.GetWeakPtr());
206 209
207 // Dispatch task to open from the worker pool, since open may block. 210 // Dispatch task to open from the worker pool, since open may block.
208 base::WorkerPool::PostTask(FROM_HERE, 211 base::WorkerPool::PostTask(FROM_HERE,
209 base::Bind(&OpenInputDevice, 212 base::Bind(&OpenInputDevice,
210 base::Passed(&params), 213 base::Passed(&params),
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 } 287 }
285 288
286 observer->OnTouchscreenDevicesUpdated(touchscreens); 289 observer->OnTouchscreenDevicesUpdated(touchscreens);
287 } 290 }
288 291
289 int EventFactoryEvdev::NextDeviceId() { 292 int EventFactoryEvdev::NextDeviceId() {
290 return ++last_device_id_; 293 return ++last_device_id_;
291 } 294 }
292 295
293 } // namespace ui 296 } // namespace ui
OLDNEW
« no previous file with comments | « ui/events/ozone/evdev/event_factory_evdev.h ('k') | ui/events/ozone/evdev/key_event_converter_evdev.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698