| OLD | NEW |
| 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_manager.h" | 5 #include "ash/display/display_manager.h" |
| 6 | 6 |
| 7 #include <cmath> | 7 #include <cmath> |
| 8 #include <set> | 8 #include <set> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| 11 | 11 |
| 12 #include "ash/ash_switches.h" | 12 #include "ash/ash_switches.h" |
| 13 #include "ash/display/display_controller.h" | 13 #include "ash/display/display_controller.h" |
| 14 #include "ash/display/display_layout_store.h" |
| 14 #include "ash/display/mirror_window_controller.h" | 15 #include "ash/display/mirror_window_controller.h" |
| 15 #include "ash/screen_ash.h" | 16 #include "ash/screen_ash.h" |
| 16 #include "ash/shell.h" | 17 #include "ash/shell.h" |
| 17 #include "base/auto_reset.h" | 18 #include "base/auto_reset.h" |
| 18 #include "base/command_line.h" | 19 #include "base/command_line.h" |
| 19 #include "base/logging.h" | 20 #include "base/logging.h" |
| 20 #include "base/stl_util.h" | 21 #include "base/stl_util.h" |
| 21 #include "base/strings/string_number_conversions.h" | 22 #include "base/strings/string_number_conversions.h" |
| 22 #include "base/strings/string_split.h" | 23 #include "base/strings/string_split.h" |
| 23 #include "base/strings/stringprintf.h" | 24 #include "base/strings/stringprintf.h" |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 130 | 131 |
| 131 using aura::RootWindow; | 132 using aura::RootWindow; |
| 132 using aura::Window; | 133 using aura::Window; |
| 133 using std::string; | 134 using std::string; |
| 134 using std::vector; | 135 using std::vector; |
| 135 | 136 |
| 136 DEFINE_WINDOW_PROPERTY_KEY(int64, kDisplayIdKey, | 137 DEFINE_WINDOW_PROPERTY_KEY(int64, kDisplayIdKey, |
| 137 gfx::Display::kInvalidDisplayID); | 138 gfx::Display::kInvalidDisplayID); |
| 138 | 139 |
| 139 DisplayManager::DisplayManager() | 140 DisplayManager::DisplayManager() |
| 140 : first_display_id_(gfx::Display::kInvalidDisplayID), | 141 : layout_store_(new DisplayLayoutStore), |
| 142 first_display_id_(gfx::Display::kInvalidDisplayID), |
| 141 num_connected_displays_(0), | 143 num_connected_displays_(0), |
| 142 force_bounds_changed_(false), | 144 force_bounds_changed_(false), |
| 143 change_display_upon_host_resize_(false), | 145 change_display_upon_host_resize_(false), |
| 144 software_mirroring_enabled_(false) { | 146 software_mirroring_enabled_(false) { |
| 145 #if defined(OS_CHROMEOS) | 147 #if defined(OS_CHROMEOS) |
| 146 change_display_upon_host_resize_ = !base::chromeos::IsRunningOnChromeOS(); | 148 change_display_upon_host_resize_ = !base::chromeos::IsRunningOnChromeOS(); |
| 147 #endif | 149 #endif |
| 148 Init(); | 150 Init(); |
| 149 } | 151 } |
| 150 | 152 |
| (...skipping 761 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 912 new_display.set_rotation(display_info.rotation()); | 914 new_display.set_rotation(display_info.rotation()); |
| 913 return new_display; | 915 return new_display; |
| 914 } | 916 } |
| 915 | 917 |
| 916 bool DisplayManager::UpdateSecondaryDisplayBoundsForLayout( | 918 bool DisplayManager::UpdateSecondaryDisplayBoundsForLayout( |
| 917 DisplayList* displays, | 919 DisplayList* displays, |
| 918 size_t* updated_index) const { | 920 size_t* updated_index) const { |
| 919 if (displays->size() != 2U) | 921 if (displays->size() != 2U) |
| 920 return false; | 922 return false; |
| 921 | 923 |
| 922 DisplayController* controller = Shell::GetInstance()->display_controller(); | |
| 923 int64 id_at_zero = displays->at(0).id(); | 924 int64 id_at_zero = displays->at(0).id(); |
| 924 DisplayIdPair pair = | 925 DisplayIdPair pair = |
| 925 (id_at_zero == first_display_id_ || | 926 (id_at_zero == first_display_id_ || |
| 926 id_at_zero == gfx::Display::InternalDisplayId()) ? | 927 id_at_zero == gfx::Display::InternalDisplayId()) ? |
| 927 std::make_pair(id_at_zero, displays->at(1).id()) : | 928 std::make_pair(id_at_zero, displays->at(1).id()) : |
| 928 std::make_pair(displays->at(1).id(), id_at_zero) ; | 929 std::make_pair(displays->at(1).id(), id_at_zero) ; |
| 929 DisplayLayout layout = | 930 DisplayLayout layout = |
| 930 controller->ComputeDisplayLayoutForDisplayIdPair(pair); | 931 layout_store_->ComputeDisplayLayoutForDisplayIdPair(pair); |
| 931 | 932 |
| 932 // Ignore if a user has a old format (should be extremely rare) | 933 // Ignore if a user has a old format (should be extremely rare) |
| 933 // and this will be replaced with DCHECK. | 934 // and this will be replaced with DCHECK. |
| 934 if (layout.primary_id != gfx::Display::kInvalidDisplayID) { | 935 if (layout.primary_id != gfx::Display::kInvalidDisplayID) { |
| 935 size_t primary_index, secondary_index; | 936 size_t primary_index, secondary_index; |
| 936 if (displays->at(0).id() == layout.primary_id) { | 937 if (displays->at(0).id() == layout.primary_id) { |
| 937 primary_index = 0; | 938 primary_index = 0; |
| 938 secondary_index = 1; | 939 secondary_index = 1; |
| 939 } else { | 940 } else { |
| 940 primary_index = 1; | 941 primary_index = 1; |
| 941 secondary_index = 0; | 942 secondary_index = 0; |
| 942 } | 943 } |
| 943 gfx::Rect bounds = | 944 gfx::Rect bounds = |
| 944 GetDisplayForId(displays->at(secondary_index).id()).bounds(); | 945 GetDisplayForId(displays->at(secondary_index).id()).bounds(); |
| 945 UpdateDisplayBoundsForLayout( | 946 UpdateDisplayBoundsForLayout( |
| 946 layout, displays->at(primary_index), &displays->at(secondary_index)); | 947 layout, displays->at(primary_index), &displays->at(secondary_index)); |
| 947 *updated_index = secondary_index; | 948 *updated_index = secondary_index; |
| 948 return bounds != displays->at(secondary_index).bounds(); | 949 return bounds != displays->at(secondary_index).bounds(); |
| 949 } | 950 } |
| 950 return false; | 951 return false; |
| 951 } | 952 } |
| 952 | 953 |
| 953 } // namespace internal | 954 } // namespace internal |
| 954 } // namespace ash | 955 } // namespace ash |
| OLD | NEW |