| Index: ui/events/ozone/evdev/input_controller_evdev.cc
|
| diff --git a/ui/events/ozone/evdev/input_controller_evdev.cc b/ui/events/ozone/evdev/input_controller_evdev.cc
|
| index 15fced21d9f6766eb7f5cc85748ae029942a752e..0f3ba9c3b89c4a2499f83955988f8c8aeb16b562 100644
|
| --- a/ui/events/ozone/evdev/input_controller_evdev.cc
|
| +++ b/ui/events/ozone/evdev/input_controller_evdev.cc
|
| @@ -7,6 +7,7 @@
|
| #include <algorithm>
|
| #include <linux/input.h>
|
|
|
| +#include "base/thread_task_runner_handle.h"
|
| #include "ui/events/ozone/evdev/input_device_factory_evdev_proxy.h"
|
| #include "ui/events/ozone/evdev/keyboard_evdev.h"
|
| #include "ui/events/ozone/evdev/mouse_button_map_evdev.h"
|
| @@ -15,11 +16,13 @@ namespace ui {
|
|
|
| InputControllerEvdev::InputControllerEvdev(KeyboardEvdev* keyboard,
|
| MouseButtonMapEvdev* button_map)
|
| - : input_device_factory_(nullptr),
|
| + : settings_update_pending_(false),
|
| + input_device_factory_(nullptr),
|
| keyboard_(keyboard),
|
| button_map_(button_map),
|
| has_mouse_(false),
|
| - has_touchpad_(false) {
|
| + has_touchpad_(false),
|
| + weak_ptr_factory_(this) {
|
| }
|
|
|
| InputControllerEvdev::~InputControllerEvdev() {
|
| @@ -28,6 +31,8 @@ InputControllerEvdev::~InputControllerEvdev() {
|
| void InputControllerEvdev::SetInputDeviceFactory(
|
| InputDeviceFactoryEvdevProxy* input_device_factory) {
|
| input_device_factory_ = input_device_factory;
|
| +
|
| + UpdateDeviceSettings();
|
| }
|
|
|
| void InputControllerEvdev::set_has_mouse(bool has_mouse) {
|
| @@ -100,33 +105,33 @@ void InputControllerEvdev::EnableInternalKeyboard() {
|
| }
|
|
|
| void InputControllerEvdev::SetTouchpadSensitivity(int value) {
|
| - if (input_device_factory_)
|
| - input_device_factory_->SetTouchpadSensitivity(value);
|
| + input_device_settings_.touchpad_sensitivity = value;
|
| + ScheduleUpdateDeviceSettings();
|
| }
|
|
|
| void InputControllerEvdev::SetTapToClick(bool enabled) {
|
| - if (input_device_factory_)
|
| - input_device_factory_->SetTapToClick(enabled);
|
| + input_device_settings_.tap_to_click_enabled = enabled;
|
| + ScheduleUpdateDeviceSettings();
|
| }
|
|
|
| void InputControllerEvdev::SetThreeFingerClick(bool enabled) {
|
| - if (input_device_factory_)
|
| - input_device_factory_->SetThreeFingerClick(enabled);
|
| + input_device_settings_.three_finger_click_enabled = enabled;
|
| + ScheduleUpdateDeviceSettings();
|
| }
|
|
|
| void InputControllerEvdev::SetTapDragging(bool enabled) {
|
| - if (input_device_factory_)
|
| - input_device_factory_->SetTapDragging(enabled);
|
| + input_device_settings_.tap_dragging_enabled = enabled;
|
| + ScheduleUpdateDeviceSettings();
|
| }
|
|
|
| void InputControllerEvdev::SetNaturalScroll(bool enabled) {
|
| - if (input_device_factory_)
|
| - input_device_factory_->SetNaturalScroll(enabled);
|
| + input_device_settings_.natural_scroll_enabled = enabled;
|
| + ScheduleUpdateDeviceSettings();
|
| }
|
|
|
| void InputControllerEvdev::SetMouseSensitivity(int value) {
|
| - if (input_device_factory_)
|
| - input_device_factory_->SetMouseSensitivity(value);
|
| + input_device_settings_.mouse_sensitivity = value;
|
| + ScheduleUpdateDeviceSettings();
|
| }
|
|
|
| void InputControllerEvdev::SetPrimaryButtonRight(bool right) {
|
| @@ -135,8 +140,8 @@ void InputControllerEvdev::SetPrimaryButtonRight(bool right) {
|
| }
|
|
|
| void InputControllerEvdev::SetTapToClickPaused(bool state) {
|
| - if (input_device_factory_)
|
| - input_device_factory_->SetTapToClickPaused(state);
|
| + input_device_settings_.tap_to_click_paused = state;
|
| + ScheduleUpdateDeviceSettings();
|
| }
|
|
|
| void InputControllerEvdev::GetTouchDeviceStatus(
|
| @@ -147,4 +152,18 @@ void InputControllerEvdev::GetTouchDeviceStatus(
|
| reply.Run(make_scoped_ptr(new std::string));
|
| }
|
|
|
| +void InputControllerEvdev::ScheduleUpdateDeviceSettings() {
|
| + if (!input_device_factory_ || settings_update_pending_)
|
| + return;
|
| + base::ThreadTaskRunnerHandle::Get()->PostTask(
|
| + FROM_HERE, base::Bind(&InputControllerEvdev::UpdateDeviceSettings,
|
| + weak_ptr_factory_.GetWeakPtr()));
|
| + settings_update_pending_ = true;
|
| +}
|
| +
|
| +void InputControllerEvdev::UpdateDeviceSettings() {
|
| + input_device_factory_->UpdateInputDeviceSettings(input_device_settings_);
|
| + settings_update_pending_ = false;
|
| +}
|
| +
|
| } // namespace ui
|
|
|