| Index: ui/display/manager/chromeos/touch_transform_controller.cc
|
| diff --git a/ui/display/manager/chromeos/touch_transform_controller.cc b/ui/display/manager/chromeos/touch_transform_controller.cc
|
| index 99f54ec8eac927c7a8f48bd3cd8b9d9d334d6448..a297d628ef953a3d62fc891860d085a39a0c2d72 100644
|
| --- a/ui/display/manager/chromeos/touch_transform_controller.cc
|
| +++ b/ui/display/manager/chromeos/touch_transform_controller.cc
|
| @@ -10,12 +10,14 @@
|
| #include "third_party/skia/include/core/SkMatrix44.h"
|
| #include "ui/display/display_layout.h"
|
| #include "ui/display/manager/chromeos/display_configurator.h"
|
| +#include "ui/display/manager/chromeos/touch_device_transform.h"
|
| +#include "ui/display/manager/chromeos/touch_transform_setter.h"
|
| #include "ui/display/manager/display_manager.h"
|
| #include "ui/display/manager/managed_display_info.h"
|
| #include "ui/display/screen.h"
|
| #include "ui/display/types/display_constants.h"
|
| #include "ui/display/types/display_snapshot.h"
|
| -#include "ui/events/devices/device_data_manager.h"
|
| +#include "ui/events/devices/input_device_manager.h"
|
|
|
| namespace display {
|
|
|
| @@ -23,7 +25,7 @@ namespace {
|
|
|
| ui::TouchscreenDevice FindTouchscreenById(int id) {
|
| const std::vector<ui::TouchscreenDevice>& touchscreens =
|
| - ui::DeviceDataManager::GetInstance()->GetTouchscreenDevices();
|
| + ui::InputDeviceManager::GetInstance()->GetTouchscreenDevices();
|
| for (const auto& touchscreen : touchscreens) {
|
| if (touchscreen.id == id)
|
| return touchscreen;
|
| @@ -161,6 +163,10 @@ DisplayIdList GetCurrentDisplayIdList(const DisplayManager* display_manager) {
|
|
|
| } // namespace
|
|
|
| +TouchTransformController::UpdateData::UpdateData() = default;
|
| +
|
| +TouchTransformController::UpdateData::~UpdateData() = default;
|
| +
|
| // This is to compute the scale ratio for the TouchEvent's radius. The
|
| // configured resolution of the display is not always the same as the touch
|
| // screen's reporting resolution, e.g. the display could be set as
|
| @@ -283,38 +289,49 @@ gfx::Transform TouchTransformController::GetTouchTransform(
|
|
|
| TouchTransformController::TouchTransformController(
|
| DisplayConfigurator* display_configurator,
|
| - DisplayManager* display_manager)
|
| + DisplayManager* display_manager,
|
| + std::unique_ptr<TouchTransformSetter> setter)
|
| : display_configurator_(display_configurator),
|
| - display_manager_(display_manager) {}
|
| + display_manager_(display_manager),
|
| + setter_(std::move(setter)) {}
|
|
|
| TouchTransformController::~TouchTransformController() {}
|
|
|
| +void TouchTransformController::UpdateTouchTransforms() const {
|
| + UpdateData update_data;
|
| + UpdateTouchTransforms(&update_data);
|
| + setter_->ConfigureTouchDevices(update_data.device_to_scale,
|
| + update_data.touch_device_transforms);
|
| +}
|
| +
|
| void TouchTransformController::UpdateTouchRadius(
|
| - const ManagedDisplayInfo& display) const {
|
| - ui::DeviceDataManager* device_manager = ui::DeviceDataManager::GetInstance();
|
| + const ManagedDisplayInfo& display,
|
| + UpdateData* update_data) const {
|
| for (const auto& device_id : display.input_devices()) {
|
| - device_manager->UpdateTouchRadiusScale(
|
| - device_id,
|
| - GetTouchResolutionScale(display, FindTouchscreenById(device_id)));
|
| + DCHECK_EQ(0u, update_data->device_to_scale.count(device_id));
|
| + update_data->device_to_scale[device_id] =
|
| + GetTouchResolutionScale(display, FindTouchscreenById(device_id));
|
| }
|
| }
|
|
|
| void TouchTransformController::UpdateTouchTransform(
|
| int64_t target_display_id,
|
| const ManagedDisplayInfo& touch_display,
|
| - const ManagedDisplayInfo& target_display) const {
|
| - ui::DeviceDataManager* device_manager = ui::DeviceDataManager::GetInstance();
|
| + const ManagedDisplayInfo& target_display,
|
| + UpdateData* update_data) const {
|
| + TouchDeviceTransform touch_device_transform;
|
| + touch_device_transform.display_id = target_display_id;
|
| gfx::Size fb_size = display_configurator_->framebuffer_size();
|
| for (const auto& device_id : touch_display.input_devices()) {
|
| - device_manager->UpdateTouchInfoForDisplay(
|
| - target_display_id, device_id,
|
| - GetTouchTransform(target_display, touch_display,
|
| - FindTouchscreenById(device_id), fb_size));
|
| + touch_device_transform.device_id = device_id;
|
| + touch_device_transform.transform = GetTouchTransform(
|
| + target_display, touch_display, FindTouchscreenById(device_id), fb_size);
|
| + update_data->touch_device_transforms.push_back(touch_device_transform);
|
| }
|
| }
|
|
|
| -void TouchTransformController::UpdateTouchTransforms() const {
|
| - ui::DeviceDataManager::GetInstance()->ClearTouchDeviceAssociations();
|
| +void TouchTransformController::UpdateTouchTransforms(
|
| + UpdateData* update_data) const {
|
| if (display_manager_->num_connected_displays() == 0)
|
| return;
|
|
|
| @@ -326,7 +343,7 @@ void TouchTransformController::UpdateTouchTransforms() const {
|
| for (int64_t display_id : display_id_list) {
|
| DCHECK(display_id != kInvalidDisplayId);
|
| display_info_list.push_back(display_manager_->GetDisplayInfo(display_id));
|
| - UpdateTouchRadius(display_info_list.back());
|
| + UpdateTouchRadius(display_info_list.back(), update_data);
|
| }
|
|
|
| if (display_manager_->IsInMirrorMode()) {
|
| @@ -347,14 +364,14 @@ void TouchTransformController::UpdateTouchTransforms() const {
|
| : index;
|
| UpdateTouchTransform(display_id_list[primary_display_id_index],
|
| display_info_list[index],
|
| - display_info_list[touch_display_index]);
|
| + display_info_list[touch_display_index], update_data);
|
| }
|
| return;
|
| }
|
|
|
| for (std::size_t index = 0; index < display_id_list.size(); index++) {
|
| UpdateTouchTransform(display_id_list[index], display_info_list[index],
|
| - display_info_list[index]);
|
| + display_info_list[index], update_data);
|
| }
|
| }
|
|
|
|
|