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

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

Issue 956793002: ozone: evdev: Keep track of settings & apply to new devices (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2311
Patch Set: Created 5 years, 9 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/input_controller_evdev.h" 5 #include "ui/events/ozone/evdev/input_controller_evdev.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <linux/input.h> 8 #include <linux/input.h>
9 9
10 #include "base/thread_task_runner_handle.h"
10 #include "ui/events/ozone/evdev/input_device_factory_evdev_proxy.h" 11 #include "ui/events/ozone/evdev/input_device_factory_evdev_proxy.h"
11 #include "ui/events/ozone/evdev/keyboard_evdev.h" 12 #include "ui/events/ozone/evdev/keyboard_evdev.h"
12 #include "ui/events/ozone/evdev/mouse_button_map_evdev.h" 13 #include "ui/events/ozone/evdev/mouse_button_map_evdev.h"
13 14
14 namespace ui { 15 namespace ui {
15 16
16 InputControllerEvdev::InputControllerEvdev(KeyboardEvdev* keyboard, 17 InputControllerEvdev::InputControllerEvdev(KeyboardEvdev* keyboard,
17 MouseButtonMapEvdev* button_map) 18 MouseButtonMapEvdev* button_map)
18 : input_device_factory_(nullptr), 19 : settings_update_pending_(false),
20 input_device_factory_(nullptr),
19 keyboard_(keyboard), 21 keyboard_(keyboard),
20 button_map_(button_map), 22 button_map_(button_map),
21 has_mouse_(false), 23 has_mouse_(false),
22 has_touchpad_(false) { 24 has_touchpad_(false),
25 weak_ptr_factory_(this) {
23 } 26 }
24 27
25 InputControllerEvdev::~InputControllerEvdev() { 28 InputControllerEvdev::~InputControllerEvdev() {
26 } 29 }
27 30
28 void InputControllerEvdev::SetInputDeviceFactory( 31 void InputControllerEvdev::SetInputDeviceFactory(
29 InputDeviceFactoryEvdevProxy* input_device_factory) { 32 InputDeviceFactoryEvdevProxy* input_device_factory) {
30 input_device_factory_ = input_device_factory; 33 input_device_factory_ = input_device_factory;
34
35 UpdateDeviceSettings();
31 } 36 }
32 37
33 void InputControllerEvdev::set_has_mouse(bool has_mouse) { 38 void InputControllerEvdev::set_has_mouse(bool has_mouse) {
34 has_mouse_ = has_mouse; 39 has_mouse_ = has_mouse;
35 } 40 }
36 41
37 void InputControllerEvdev::set_has_touchpad(bool has_touchpad) { 42 void InputControllerEvdev::set_has_touchpad(bool has_touchpad) {
38 has_touchpad_ = has_touchpad; 43 has_touchpad_ = has_touchpad;
39 } 44 }
40 45
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 excepted_keys.Pass()); 98 excepted_keys.Pass());
94 } 99 }
95 } 100 }
96 101
97 void InputControllerEvdev::EnableInternalKeyboard() { 102 void InputControllerEvdev::EnableInternalKeyboard() {
98 if (input_device_factory_) 103 if (input_device_factory_)
99 input_device_factory_->EnableInternalKeyboard(); 104 input_device_factory_->EnableInternalKeyboard();
100 } 105 }
101 106
102 void InputControllerEvdev::SetTouchpadSensitivity(int value) { 107 void InputControllerEvdev::SetTouchpadSensitivity(int value) {
103 if (input_device_factory_) 108 input_device_settings_.touchpad_sensitivity = value;
104 input_device_factory_->SetTouchpadSensitivity(value); 109 ScheduleUpdateDeviceSettings();
105 } 110 }
106 111
107 void InputControllerEvdev::SetTapToClick(bool enabled) { 112 void InputControllerEvdev::SetTapToClick(bool enabled) {
108 if (input_device_factory_) 113 input_device_settings_.tap_to_click_enabled = enabled;
109 input_device_factory_->SetTapToClick(enabled); 114 ScheduleUpdateDeviceSettings();
110 } 115 }
111 116
112 void InputControllerEvdev::SetThreeFingerClick(bool enabled) { 117 void InputControllerEvdev::SetThreeFingerClick(bool enabled) {
113 if (input_device_factory_) 118 input_device_settings_.three_finger_click_enabled = enabled;
114 input_device_factory_->SetThreeFingerClick(enabled); 119 ScheduleUpdateDeviceSettings();
115 } 120 }
116 121
117 void InputControllerEvdev::SetTapDragging(bool enabled) { 122 void InputControllerEvdev::SetTapDragging(bool enabled) {
118 if (input_device_factory_) 123 input_device_settings_.tap_dragging_enabled = enabled;
119 input_device_factory_->SetTapDragging(enabled); 124 ScheduleUpdateDeviceSettings();
120 } 125 }
121 126
122 void InputControllerEvdev::SetNaturalScroll(bool enabled) { 127 void InputControllerEvdev::SetNaturalScroll(bool enabled) {
123 if (input_device_factory_) 128 input_device_settings_.natural_scroll_enabled = enabled;
124 input_device_factory_->SetNaturalScroll(enabled); 129 ScheduleUpdateDeviceSettings();
125 } 130 }
126 131
127 void InputControllerEvdev::SetMouseSensitivity(int value) { 132 void InputControllerEvdev::SetMouseSensitivity(int value) {
128 if (input_device_factory_) 133 input_device_settings_.mouse_sensitivity = value;
129 input_device_factory_->SetMouseSensitivity(value); 134 ScheduleUpdateDeviceSettings();
130 } 135 }
131 136
132 void InputControllerEvdev::SetPrimaryButtonRight(bool right) { 137 void InputControllerEvdev::SetPrimaryButtonRight(bool right) {
133 button_map_->UpdateButtonMap(BTN_LEFT, right ? BTN_RIGHT : BTN_LEFT); 138 button_map_->UpdateButtonMap(BTN_LEFT, right ? BTN_RIGHT : BTN_LEFT);
134 button_map_->UpdateButtonMap(BTN_RIGHT, right ? BTN_LEFT : BTN_RIGHT); 139 button_map_->UpdateButtonMap(BTN_RIGHT, right ? BTN_LEFT : BTN_RIGHT);
135 } 140 }
136 141
137 void InputControllerEvdev::SetTapToClickPaused(bool state) { 142 void InputControllerEvdev::SetTapToClickPaused(bool state) {
138 if (input_device_factory_) 143 input_device_settings_.tap_to_click_paused = state;
139 input_device_factory_->SetTapToClickPaused(state); 144 ScheduleUpdateDeviceSettings();
140 } 145 }
141 146
142 void InputControllerEvdev::GetTouchDeviceStatus( 147 void InputControllerEvdev::GetTouchDeviceStatus(
143 const GetTouchDeviceStatusReply& reply) { 148 const GetTouchDeviceStatusReply& reply) {
144 if (input_device_factory_) 149 if (input_device_factory_)
145 input_device_factory_->GetTouchDeviceStatus(reply); 150 input_device_factory_->GetTouchDeviceStatus(reply);
146 else 151 else
147 reply.Run(make_scoped_ptr(new std::string)); 152 reply.Run(make_scoped_ptr(new std::string));
148 } 153 }
149 154
155 void InputControllerEvdev::ScheduleUpdateDeviceSettings() {
156 if (!input_device_factory_ || settings_update_pending_)
157 return;
158 base::ThreadTaskRunnerHandle::Get()->PostTask(
159 FROM_HERE, base::Bind(&InputControllerEvdev::UpdateDeviceSettings,
160 weak_ptr_factory_.GetWeakPtr()));
161 settings_update_pending_ = true;
162 }
163
164 void InputControllerEvdev::UpdateDeviceSettings() {
165 input_device_factory_->UpdateInputDeviceSettings(input_device_settings_);
166 settings_update_pending_ = false;
167 }
168
150 } // namespace ui 169 } // namespace ui
OLDNEW
« no previous file with comments | « ui/events/ozone/evdev/input_controller_evdev.h ('k') | ui/events/ozone/evdev/input_device_factory_evdev.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698