| Index: ash/touch/touch_transformer_controller.cc
|
| diff --git a/ash/touch/touch_transformer_controller.cc b/ash/touch/touch_transformer_controller.cc
|
| index bc15d6f7b63ec2c47c2ac9f0fec5b3bd987322b9..5f2f0fe43f2da5e93dc716dbcd14b66e88c00f5e 100644
|
| --- a/ash/touch/touch_transformer_controller.cc
|
| +++ b/ash/touch/touch_transformer_controller.cc
|
| @@ -124,6 +124,29 @@ TouchTransformerController::~TouchTransformerController() {
|
| Shell::GetInstance()->display_controller()->RemoveObserver(this);
|
| }
|
|
|
| +void TouchTransformerController::UpdateTouchRadius(
|
| + const DisplayInfo& display) const {
|
| + ui::DeviceDataManager* device_manager = ui::DeviceDataManager::GetInstance();
|
| + device_manager->UpdateTouchRadiusScale(
|
| + display.touch_device_id(),
|
| + GetTouchResolutionScale(display,
|
| + FindTouchscreenById(display.touch_device_id())));
|
| +}
|
| +
|
| +void TouchTransformerController::UpdateTouchTransform(
|
| + int64_t target_display_id,
|
| + const DisplayInfo& touch_display,
|
| + const DisplayInfo& target_display) const {
|
| + ui::DeviceDataManager* device_manager = ui::DeviceDataManager::GetInstance();
|
| + gfx::Size fb_size =
|
| + Shell::GetInstance()->display_configurator()->framebuffer_size();
|
| + device_manager->UpdateTouchInfoForDisplay(
|
| + target_display_id, touch_display.touch_device_id(),
|
| + GetTouchTransform(target_display, touch_display,
|
| + FindTouchscreenById(touch_display.touch_device_id()),
|
| + fb_size));
|
| +}
|
| +
|
| void TouchTransformerController::UpdateTouchTransformer() const {
|
| ui::DeviceDataManager* device_manager = ui::DeviceDataManager::GetInstance();
|
| device_manager->ClearTouchDeviceAssociations();
|
| @@ -147,11 +170,7 @@ void TouchTransformerController::UpdateTouchTransformer() const {
|
| single_display_id = display_manager->first_display_id();
|
| DCHECK(single_display_id != gfx::Display::kInvalidDisplayID);
|
| single_display = display_manager->GetDisplayInfo(single_display_id);
|
| - device_manager->UpdateTouchRadiusScale(
|
| - single_display.touch_device_id(),
|
| - GetTouchResolutionScale(
|
| - single_display,
|
| - FindTouchscreenById(single_display.touch_device_id())));
|
| + UpdateTouchRadius(single_display);
|
| } else {
|
| DisplayIdPair id_pair = display_manager->GetCurrentDisplayIdPair();
|
| display1_id = id_pair.first;
|
| @@ -160,53 +179,28 @@ void TouchTransformerController::UpdateTouchTransformer() const {
|
| display2_id != gfx::Display::kInvalidDisplayID);
|
| display1 = display_manager->GetDisplayInfo(display1_id);
|
| display2 = display_manager->GetDisplayInfo(display2_id);
|
| - device_manager->UpdateTouchRadiusScale(
|
| - display1.touch_device_id(),
|
| - GetTouchResolutionScale(
|
| - display1,
|
| - FindTouchscreenById(display1.touch_device_id())));
|
| - device_manager->UpdateTouchRadiusScale(
|
| - display2.touch_device_id(),
|
| - GetTouchResolutionScale(
|
| - display2,
|
| - FindTouchscreenById(display2.touch_device_id())));
|
| + UpdateTouchRadius(display1);
|
| + UpdateTouchRadius(display2);
|
| }
|
|
|
| gfx::Size fb_size =
|
| Shell::GetInstance()->display_configurator()->framebuffer_size();
|
|
|
| if (display_manager->IsInMirrorMode()) {
|
| + int64_t primary_display_id = display_controller->GetPrimaryDisplayId();
|
| if (GetDisplayManager()->SoftwareMirroringEnabled()) {
|
| // In extended but software mirroring mode, there is a WindowTreeHost for
|
| // each display, but all touches are forwarded to the primary root
|
| // window's WindowTreeHost.
|
| DisplayInfo target_display =
|
| - display_controller->GetPrimaryDisplayId() == display1_id ? display1
|
| - : display2;
|
| - device_manager->UpdateTouchInfoForDisplay(
|
| - target_display.id(), display1.touch_device_id(),
|
| - GetTouchTransform(target_display, display1,
|
| - FindTouchscreenById(display1.touch_device_id()),
|
| - fb_size));
|
| - device_manager->UpdateTouchInfoForDisplay(
|
| - target_display.id(), display2.touch_device_id(),
|
| - GetTouchTransform(target_display, display2,
|
| - FindTouchscreenById(display2.touch_device_id()),
|
| - fb_size));
|
| + primary_display_id == display1_id ? display1 : display2;
|
| + UpdateTouchTransform(target_display.id(), display1, target_display);
|
| + UpdateTouchTransform(target_display.id(), display2, target_display);
|
| } else {
|
| // In mirror mode, there is just one WindowTreeHost and two displays. Make
|
| // the WindowTreeHost accept touch events from both displays.
|
| - int64 primary_display_id = display_controller->GetPrimaryDisplayId();
|
| - device_manager->UpdateTouchInfoForDisplay(
|
| - primary_display_id, display1.touch_device_id(),
|
| - GetTouchTransform(display1, display1,
|
| - FindTouchscreenById(display1.touch_device_id()),
|
| - fb_size));
|
| - device_manager->UpdateTouchInfoForDisplay(
|
| - primary_display_id, display2.touch_device_id(),
|
| - GetTouchTransform(display2, display2,
|
| - FindTouchscreenById(display2.touch_device_id()),
|
| - fb_size));
|
| + UpdateTouchTransform(primary_display_id, display1, display1);
|
| + UpdateTouchTransform(primary_display_id, display2, display2);
|
| }
|
| return;
|
| }
|
| @@ -214,25 +208,13 @@ void TouchTransformerController::UpdateTouchTransformer() const {
|
| if (display_manager->num_connected_displays() > 1) {
|
| // In actual extended mode, each display is associated with one
|
| // WindowTreeHost.
|
| - device_manager->UpdateTouchInfoForDisplay(
|
| - display1_id, display1.touch_device_id(),
|
| - GetTouchTransform(display1, display1,
|
| - FindTouchscreenById(display1.touch_device_id()),
|
| - fb_size));
|
| - device_manager->UpdateTouchInfoForDisplay(
|
| - display2_id, display2.touch_device_id(),
|
| - GetTouchTransform(display2, display2,
|
| - FindTouchscreenById(display2.touch_device_id()),
|
| - fb_size));
|
| + UpdateTouchTransform(display1_id, display1, display1);
|
| + UpdateTouchTransform(display2_id, display2, display2);
|
| return;
|
| }
|
|
|
| // Single display mode. The WindowTreeHost has one associated display id.
|
| - device_manager->UpdateTouchInfoForDisplay(
|
| - single_display_id, single_display.touch_device_id(),
|
| - GetTouchTransform(single_display, single_display,
|
| - FindTouchscreenById(single_display.touch_device_id()),
|
| - fb_size));
|
| + UpdateTouchTransform(single_display_id, single_display, single_display);
|
| }
|
|
|
| void TouchTransformerController::OnDisplaysInitialized() {
|
|
|