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

Side by Side Diff: ash/display/display_controller.cc

Issue 1119953002: Enable display rotation, magnifier in unified desktop mode (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 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
« no previous file with comments | « no previous file | ash/display/display_manager.h » ('j') | ash/display/display_manager.h » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "ash/display/display_controller.h" 5 #include "ash/display/display_controller.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 #include <map> 9 #include <map>
10 10
11 #include "ash/ash_switches.h" 11 #include "ash/ash_switches.h"
12 #include "ash/display/cursor_window_controller.h" 12 #include "ash/display/cursor_window_controller.h"
13 #include "ash/display/display_layout_store.h" 13 #include "ash/display/display_layout_store.h"
14 #include "ash/display/display_manager.h" 14 #include "ash/display/display_manager.h"
15 #include "ash/display/mirror_window_controller.h" 15 #include "ash/display/mirror_window_controller.h"
16 #include "ash/display/root_window_transformers.h" 16 #include "ash/display/root_window_transformers.h"
17 #include "ash/host/ash_window_tree_host.h" 17 #include "ash/host/ash_window_tree_host.h"
18 #include "ash/host/ash_window_tree_host_init_params.h" 18 #include "ash/host/ash_window_tree_host_init_params.h"
19 #include "ash/host/root_window_transformer.h" 19 #include "ash/host/root_window_transformer.h"
20 #include "ash/magnifier/magnification_controller.h"
21 #include "ash/magnifier/partial_magnification_controller.h"
20 #include "ash/root_window_controller.h" 22 #include "ash/root_window_controller.h"
21 #include "ash/root_window_settings.h" 23 #include "ash/root_window_settings.h"
22 #include "ash/screen_util.h" 24 #include "ash/screen_util.h"
23 #include "ash/shell.h" 25 #include "ash/shell.h"
24 #include "ash/shell_delegate.h" 26 #include "ash/shell_delegate.h"
25 #include "ash/wm/coordinate_conversion.h" 27 #include "ash/wm/coordinate_conversion.h"
26 #include "base/command_line.h" 28 #include "base/command_line.h"
27 #include "base/stl_util.h" 29 #include "base/stl_util.h"
28 #include "base/strings/stringprintf.h" 30 #include "base/strings/stringprintf.h"
29 #include "base/strings/utf_string_conversions.h" 31 #include "base/strings/utf_string_conversions.h"
(...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after
359 return GetRootWindowForDisplayId(primary_display_id); 361 return GetRootWindowForDisplayId(primary_display_id);
360 } 362 }
361 363
362 aura::Window* DisplayController::GetRootWindowForDisplayId(int64 id) { 364 aura::Window* DisplayController::GetRootWindowForDisplayId(int64 id) {
363 AshWindowTreeHost* host = GetAshWindowTreeHostForDisplayId(id); 365 AshWindowTreeHost* host = GetAshWindowTreeHostForDisplayId(id);
364 CHECK(host); 366 CHECK(host);
365 return GetWindow(host); 367 return GetWindow(host);
366 } 368 }
367 369
368 AshWindowTreeHost* DisplayController::GetAshWindowTreeHostForDisplayId( 370 AshWindowTreeHost* DisplayController::GetAshWindowTreeHostForDisplayId(
369 int64 id) { 371 int64 display_id) {
370 CHECK_EQ(1u, window_tree_hosts_.count(id)); 372 CHECK_EQ(1u, window_tree_hosts_.count(display_id))
371 return window_tree_hosts_[id]; 373 << "display id = " << display_id;
374 return window_tree_hosts_[display_id];
372 } 375 }
373 376
374 void DisplayController::CloseChildWindows() { 377 void DisplayController::CloseChildWindows() {
375 for (WindowTreeHostMap::const_iterator it = window_tree_hosts_.begin(); 378 for (WindowTreeHostMap::const_iterator it = window_tree_hosts_.begin();
376 it != window_tree_hosts_.end(); 379 it != window_tree_hosts_.end();
377 ++it) { 380 ++it) {
378 aura::Window* root_window = GetWindow(it->second); 381 aura::Window* root_window = GetWindow(it->second);
379 RootWindowController* controller = GetRootWindowController(root_window); 382 RootWindowController* controller = GetRootWindowController(root_window);
380 if (controller) { 383 if (controller) {
381 controller->CloseChildWindows(); 384 controller->CloseChildWindows();
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
577 target_location_in_native = center; 580 target_location_in_native = center;
578 closest_distance_squared = distance_squared; 581 closest_distance_squared = distance_squared;
579 } 582 }
580 } 583 }
581 584
582 gfx::Point target_location_in_root = target_location_in_native; 585 gfx::Point target_location_in_root = target_location_in_native;
583 dst_root_window->GetHost()->ConvertPointFromNativeScreen( 586 dst_root_window->GetHost()->ConvertPointFromNativeScreen(
584 &target_location_in_root); 587 &target_location_in_root);
585 588
586 #if defined(USE_OZONE) 589 #if defined(USE_OZONE)
590 LOG(ERROR) << "Start OZONE";
587 gfx::Point target_location_in_screen = target_location_in_root; 591 gfx::Point target_location_in_screen = target_location_in_root;
588 ::wm::ConvertPointToScreen(dst_root_window, &target_location_in_screen); 592 ::wm::ConvertPointToScreen(dst_root_window, &target_location_in_screen);
589 const gfx::Display& target_display = 593 const gfx::Display& target_display =
590 display_manager->FindDisplayContainingPoint(target_location_in_screen); 594 display_manager->FindDisplayContainingPoint(target_location_in_screen);
591 int64 target_display_id = target_display.id(); 595 int64 target_display_id = target_display.id();
592 596
593 // Do not move the cursor if the cursor's location did not change. This avoids 597 // Do not move the cursor if the cursor's location did not change. This avoids
594 // moving (and showing) the cursor: 598 // moving (and showing) the cursor:
595 // - At startup. 599 // - At startup.
596 // - When the device is rotated in maximized mode. 600 // - When the device is rotated in maximized mode.
(...skipping 11 matching lines...) Expand all
608 // that the cursor is on changes. 612 // that the cursor is on changes.
609 Shell::GetInstance()->cursor_manager()->SetDisplay(target_display); 613 Shell::GetInstance()->cursor_manager()->SetDisplay(target_display);
610 614
611 // Update the cursor's root location. This ends up dispatching a synthetic 615 // Update the cursor's root location. This ends up dispatching a synthetic
612 // mouse move. The synthetic mouse move updates the composited cursor's 616 // mouse move. The synthetic mouse move updates the composited cursor's
613 // location and hover effects. Synthetic mouse moves do not affect the 617 // location and hover effects. Synthetic mouse moves do not affect the
614 // cursor's visibility. 618 // cursor's visibility.
615 dst_root_window->GetHost()->dispatcher()->OnCursorMovedToRootLocation( 619 dst_root_window->GetHost()->dispatcher()->OnCursorMovedToRootLocation(
616 target_location_in_root); 620 target_location_in_root);
617 } 621 }
622 LOG(ERROR) << "END OZONE";
618 #else 623 #else
619 dst_root_window->MoveCursorTo(target_location_in_root); 624 dst_root_window->MoveCursorTo(target_location_in_root);
620 #endif 625 #endif
621 } 626 }
622 627
623 bool DisplayController::UpdateWorkAreaOfDisplayNearestWindow( 628 bool DisplayController::UpdateWorkAreaOfDisplayNearestWindow(
624 const aura::Window* window, 629 const aura::Window* window,
625 const gfx::Insets& insets) { 630 const gfx::Insets& insets) {
626 const aura::Window* root_window = window->GetRootWindow(); 631 const aura::Window* root_window = window->GetRootWindow();
627 int64 id = GetRootWindowSettings(root_window)->display_id; 632 int64 id = GetRootWindowSettings(root_window)->display_id;
628 // if id is |kInvaildDisplayID|, it's being deleted. 633 // if id is |kInvaildDisplayID|, it's being deleted.
629 DCHECK(id != gfx::Display::kInvalidDisplayID); 634 DCHECK(id != gfx::Display::kInvalidDisplayID);
630 return GetDisplayManager()->UpdateWorkAreaOfDisplay(id, insets); 635 return GetDisplayManager()->UpdateWorkAreaOfDisplay(id, insets);
631 } 636 }
632 637
633 void DisplayController::OnDisplayAdded(const gfx::Display& display) { 638 void DisplayController::OnDisplayAdded(const gfx::Display& display) {
634 #if defined(OS_CHROMEOS) 639 #if defined(OS_CHROMEOS)
635 if (GetDisplayManager()->default_multi_display_mode() == 640 if (GetDisplayManager()->default_multi_display_mode() ==
636 DisplayManager::UNIFIED) { 641 DisplayManager::UNIFIED) {
637 if (primary_display_id == gfx::Display::kInvalidDisplayID) 642 if (primary_display_id == gfx::Display::kInvalidDisplayID)
638 primary_display_id = display.id(); 643 primary_display_id = display.id();
639 AshWindowTreeHost* ash_host = 644 AshWindowTreeHost* ash_host =
640 AddWindowTreeHostForDisplay(display, AshWindowTreeHostInitParams()); 645 AddWindowTreeHostForDisplay(display, AshWindowTreeHostInitParams());
641 RootWindowController::CreateForSecondaryDisplay(ash_host); 646 RootWindowController::CreateForSecondaryDisplay(ash_host);
642 647
648 // Magnifier controllers keep pointers to the current root window.
649 // Update them here to avoid accessing them later.
650 Shell::GetInstance()->magnification_controller()->SwitchTargetRootWindow(
651 ash_host->AsWindowTreeHost()->window(), false);
652 Shell::GetInstance()
653 ->partial_magnification_controller()
654 ->SwitchTargetRootWindow(ash_host->AsWindowTreeHost()->window());
655
643 if (primary_tree_host_for_replace_) { 656 if (primary_tree_host_for_replace_) {
644 AshWindowTreeHost* to_delete = primary_tree_host_for_replace_; 657 AshWindowTreeHost* to_delete = primary_tree_host_for_replace_;
645 primary_tree_host_for_replace_ = nullptr; 658 primary_tree_host_for_replace_ = nullptr;
646 DeleteHost(to_delete); 659 DeleteHost(to_delete);
647 #ifndef NDEBUG 660 #ifndef NDEBUG
648 auto iter = std::find_if( 661 auto iter = std::find_if(
649 window_tree_hosts_.begin(), window_tree_hosts_.end(), 662 window_tree_hosts_.begin(), window_tree_hosts_.end(),
650 [to_delete](const std::pair<int64, AshWindowTreeHost*>& pair) { 663 [to_delete](const std::pair<int64, AshWindowTreeHost*>& pair) {
651 return pair.second == to_delete; 664 return pair.second == to_delete;
652 }); 665 });
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
873 Shell::GetInstance()->display_configurator_animation() 886 Shell::GetInstance()->display_configurator_animation()
874 ->StartFadeInAnimation(); 887 ->StartFadeInAnimation();
875 #endif 888 #endif
876 } 889 }
877 890
878 void DisplayController::SetMirrorModeAfterAnimation(bool mirror) { 891 void DisplayController::SetMirrorModeAfterAnimation(bool mirror) {
879 GetDisplayManager()->SetMirrorMode(mirror); 892 GetDisplayManager()->SetMirrorMode(mirror);
880 } 893 }
881 894
882 } // namespace ash 895 } // namespace ash
OLDNEW
« no previous file with comments | « no previous file | ash/display/display_manager.h » ('j') | ash/display/display_manager.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698