| Index: ash/display/multi_display_manager.cc
|
| diff --git a/ash/display/multi_display_manager.cc b/ash/display/multi_display_manager.cc
|
| index 37509be0e82e2522f11a472ae805ca36da0b220d..71b4fe4baa2506ddef71191385cac20995f1187a 100644
|
| --- a/ash/display/multi_display_manager.cc
|
| +++ b/ash/display/multi_display_manager.cc
|
| @@ -78,10 +78,14 @@ void MultiDisplayManager::InitInternalDisplayInfo() {
|
| return;
|
| std::vector<XID> outputs;
|
| ui::GetOutputDeviceHandles(&outputs);
|
| - std::vector<std::string> output_names = ui::GetOutputNames(outputs);
|
| - for (size_t i = 0; i < output_names.size(); ++i) {
|
| + // Output names are hardware specific and never changes.
|
| + output_names_ = ui::GetOutputNames(outputs);
|
| + for (size_t i = 0; i < output_names_.size(); ++i) {
|
| if (chromeos::OutputConfigurator::IsInternalOutputName(
|
| - output_names[i])) {
|
| + output_names_[i])) {
|
| + // Set internal as primary by default. This may be
|
| + // overritten by settings later.
|
| + primary_output_name_ = output_names_[i];
|
| XID internal_output = outputs[i];
|
| uint16 manufacturer_id = 0;
|
| uint32 serial_number = 0;
|
| @@ -95,6 +99,13 @@ void MultiDisplayManager::InitInternalDisplayInfo() {
|
| #endif
|
| }
|
|
|
| +void MultiDisplayManager::SetOutputNameForPrimaryDisplay(
|
| + const std::string& name) {
|
| + primary_output_name_ = name;
|
| + std::vector<gfx::Display> update = displays_;
|
| + OnNativeDisplaysChanged(displays_);
|
| +}
|
| +
|
| bool MultiDisplayManager::HasInternalDisplay() const {
|
| return internal_display_id_ != gfx::Display::kInvalidDisplayID;
|
| }
|
| @@ -156,6 +167,8 @@ void MultiDisplayManager::OnNativeDisplaysChanged(
|
| } else {
|
| new_displays = updated_displays;
|
| }
|
| + // Move the primary display to the first if any.
|
| + MovePrimaryToFirst();
|
|
|
| size_t min = std::min(displays_.size(), new_displays.size());
|
|
|
|
|