| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "ui/display/chromeos/display_configurator.h" | 5 #include "ui/display/chromeos/display_configurator.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
| (...skipping 561 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 572 cached_displays_.clear(); | 572 cached_displays_.clear(); |
| 573 for (size_t i = 0; i < snapshots.size(); ++i) { | 573 for (size_t i = 0; i < snapshots.size(); ++i) { |
| 574 DisplayState display_state; | 574 DisplayState display_state; |
| 575 display_state.display = snapshots[i]; | 575 display_state.display = snapshots[i]; |
| 576 cached_displays_.push_back(display_state); | 576 cached_displays_.push_back(display_state); |
| 577 } | 577 } |
| 578 | 578 |
| 579 // Set |selected_mode| fields. | 579 // Set |selected_mode| fields. |
| 580 for (size_t i = 0; i < cached_displays_.size(); ++i) { | 580 for (size_t i = 0; i < cached_displays_.size(); ++i) { |
| 581 DisplayState* display_state = &cached_displays_[i]; | 581 DisplayState* display_state = &cached_displays_[i]; |
| 582 if (display_state->display->has_proper_display_id()) { | 582 gfx::Size size; |
| 583 gfx::Size size; | 583 if (state_controller_ && |
| 584 if (state_controller_ && | 584 state_controller_->GetResolutionForDisplayId( |
| 585 state_controller_->GetResolutionForDisplayId( | 585 display_state->display->display_id(), &size)) { |
| 586 display_state->display->display_id(), &size)) { | 586 display_state->selected_mode = |
| 587 display_state->selected_mode = | 587 FindDisplayModeMatchingSize(*display_state->display, size); |
| 588 FindDisplayModeMatchingSize(*display_state->display, size); | |
| 589 } | |
| 590 } | 588 } |
| 589 |
| 591 // Fall back to native mode. | 590 // Fall back to native mode. |
| 592 if (!display_state->selected_mode) | 591 if (!display_state->selected_mode) |
| 593 display_state->selected_mode = display_state->display->native_mode(); | 592 display_state->selected_mode = display_state->display->native_mode(); |
| 594 } | 593 } |
| 595 | 594 |
| 596 // Set |mirror_mode| fields. | 595 // Set |mirror_mode| fields. |
| 597 if (cached_displays_.size() == 2) { | 596 if (cached_displays_.size() == 2) { |
| 598 bool one_is_internal = | 597 bool one_is_internal = |
| 599 cached_displays_[0].display->type() == DISPLAY_CONNECTION_TYPE_INTERNAL; | 598 cached_displays_[0].display->type() == DISPLAY_CONNECTION_TYPE_INTERNAL; |
| 600 bool two_is_internal = | 599 bool two_is_internal = |
| (...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 953 if (num_on_displays == 1) { | 952 if (num_on_displays == 1) { |
| 954 // If only one display is currently turned on, return the "single" | 953 // If only one display is currently turned on, return the "single" |
| 955 // state so that its native mode will be used. | 954 // state so that its native mode will be used. |
| 956 return MULTIPLE_DISPLAY_STATE_SINGLE; | 955 return MULTIPLE_DISPLAY_STATE_SINGLE; |
| 957 } else { | 956 } else { |
| 958 if (!state_controller_) | 957 if (!state_controller_) |
| 959 return MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED; | 958 return MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED; |
| 960 // With either both displays on or both displays off, use one of the | 959 // With either both displays on or both displays off, use one of the |
| 961 // dual modes. | 960 // dual modes. |
| 962 std::vector<int64_t> display_ids; | 961 std::vector<int64_t> display_ids; |
| 963 for (size_t i = 0; i < cached_displays_.size(); ++i) { | 962 for (size_t i = 0; i < cached_displays_.size(); ++i) |
| 964 // If display id isn't available, switch to extended mode. | |
| 965 if (!cached_displays_[i].display->has_proper_display_id()) | |
| 966 return MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED; | |
| 967 display_ids.push_back(cached_displays_[i].display->display_id()); | 963 display_ids.push_back(cached_displays_[i].display->display_id()); |
| 968 } | 964 |
| 969 return state_controller_->GetStateForDisplayIds(display_ids); | 965 return state_controller_->GetStateForDisplayIds(display_ids); |
| 970 } | 966 } |
| 971 } | 967 } |
| 972 default: | 968 default: |
| 973 NOTREACHED(); | 969 NOTREACHED(); |
| 974 } | 970 } |
| 975 return MULTIPLE_DISPLAY_STATE_INVALID; | 971 return MULTIPLE_DISPLAY_STATE_INVALID; |
| 976 } | 972 } |
| 977 | 973 |
| 978 } // namespace ui | 974 } // namespace ui |
| OLD | NEW |