| 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> |
| (...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 243 void DisplayManager::SetOverscanInsets(int64 display_id, | 243 void DisplayManager::SetOverscanInsets(int64 display_id, |
| 244 const gfx::Insets& insets_in_dip) { | 244 const gfx::Insets& insets_in_dip) { |
| 245 // TODO(oshima): insets has to be rotated according to the | 245 // TODO(oshima): insets has to be rotated according to the |
| 246 // the current display rotation. | 246 // the current display rotation. |
| 247 display_info_[display_id].SetOverscanInsets(true, insets_in_dip); | 247 display_info_[display_id].SetOverscanInsets(true, insets_in_dip); |
| 248 DisplayInfoList display_info_list; | 248 DisplayInfoList display_info_list; |
| 249 for (DisplayList::const_iterator iter = displays_.begin(); | 249 for (DisplayList::const_iterator iter = displays_.begin(); |
| 250 iter != displays_.end(); ++iter) { | 250 iter != displays_.end(); ++iter) { |
| 251 display_info_list.push_back(GetDisplayInfo(iter->id())); | 251 display_info_list.push_back(GetDisplayInfo(iter->id())); |
| 252 } | 252 } |
| 253 AddMirrorDisplayInfoIfAny(&display_info_list); |
| 253 UpdateDisplays(display_info_list); | 254 UpdateDisplays(display_info_list); |
| 254 } | 255 } |
| 255 | 256 |
| 256 void DisplayManager::ClearCustomOverscanInsets(int64 display_id) { | 257 void DisplayManager::ClearCustomOverscanInsets(int64 display_id) { |
| 257 display_info_[display_id].clear_has_custom_overscan_insets(); | 258 display_info_[display_id].clear_has_custom_overscan_insets(); |
| 258 DisplayInfoList display_info_list; | 259 DisplayInfoList display_info_list; |
| 259 for (DisplayList::const_iterator iter = displays_.begin(); | 260 for (DisplayList::const_iterator iter = displays_.begin(); |
| 260 iter != displays_.end(); ++iter) { | 261 iter != displays_.end(); ++iter) { |
| 261 display_info_list.push_back(GetDisplayInfo(iter->id())); | 262 display_info_list.push_back(GetDisplayInfo(iter->id())); |
| 262 } | 263 } |
| 264 AddMirrorDisplayInfoIfAny(&display_info_list); |
| 263 UpdateDisplays(display_info_list); | 265 UpdateDisplays(display_info_list); |
| 264 } | 266 } |
| 265 | 267 |
| 266 void DisplayManager::SetDisplayRotation(int64 display_id, | 268 void DisplayManager::SetDisplayRotation(int64 display_id, |
| 267 gfx::Display::Rotation rotation) { | 269 gfx::Display::Rotation rotation) { |
| 268 if (!IsDisplayRotationEnabled()) | 270 if (!IsDisplayRotationEnabled()) |
| 269 return; | 271 return; |
| 270 DisplayInfoList display_info_list; | 272 DisplayInfoList display_info_list; |
| 271 for (DisplayList::const_iterator iter = displays_.begin(); | 273 for (DisplayList::const_iterator iter = displays_.begin(); |
| 272 iter != displays_.end(); ++iter) { | 274 iter != displays_.end(); ++iter) { |
| 273 DisplayInfo info = GetDisplayInfo(iter->id()); | 275 DisplayInfo info = GetDisplayInfo(iter->id()); |
| 274 if (info.id() == display_id) { | 276 if (info.id() == display_id) { |
| 275 if (info.rotation() == rotation) | 277 if (info.rotation() == rotation) |
| 276 return; | 278 return; |
| 277 info.set_rotation(rotation); | 279 info.set_rotation(rotation); |
| 278 } | 280 } |
| 279 display_info_list.push_back(info); | 281 display_info_list.push_back(info); |
| 280 } | 282 } |
| 283 AddMirrorDisplayInfoIfAny(&display_info_list); |
| 281 UpdateDisplays(display_info_list); | 284 UpdateDisplays(display_info_list); |
| 282 } | 285 } |
| 283 | 286 |
| 284 void DisplayManager::SetDisplayUIScale(int64 display_id, | 287 void DisplayManager::SetDisplayUIScale(int64 display_id, |
| 285 float ui_scale) { | 288 float ui_scale) { |
| 286 if (!IsDisplayUIScalingEnabled() || | 289 if (!IsDisplayUIScalingEnabled() || |
| 287 gfx::Display::InternalDisplayId() != display_id) { | 290 gfx::Display::InternalDisplayId() != display_id) { |
| 288 return; | 291 return; |
| 289 } | 292 } |
| 290 | 293 |
| 291 DisplayInfoList display_info_list; | 294 DisplayInfoList display_info_list; |
| 292 for (DisplayList::const_iterator iter = displays_.begin(); | 295 for (DisplayList::const_iterator iter = displays_.begin(); |
| 293 iter != displays_.end(); ++iter) { | 296 iter != displays_.end(); ++iter) { |
| 294 DisplayInfo info = GetDisplayInfo(iter->id()); | 297 DisplayInfo info = GetDisplayInfo(iter->id()); |
| 295 if (info.id() == display_id) { | 298 if (info.id() == display_id) { |
| 296 if (info.ui_scale() == ui_scale) | 299 if (info.ui_scale() == ui_scale) |
| 297 return; | 300 return; |
| 298 std::vector<float> scales = GetScalesForDisplay(info); | 301 std::vector<float> scales = GetScalesForDisplay(info); |
| 299 ScaleComparator comparator(ui_scale); | 302 ScaleComparator comparator(ui_scale); |
| 300 if (std::find_if(scales.begin(), scales.end(), comparator) == | 303 if (std::find_if(scales.begin(), scales.end(), comparator) == |
| 301 scales.end()) { | 304 scales.end()) { |
| 302 return; | 305 return; |
| 303 } | 306 } |
| 304 info.set_ui_scale(ui_scale); | 307 info.set_ui_scale(ui_scale); |
| 305 } | 308 } |
| 306 display_info_list.push_back(info); | 309 display_info_list.push_back(info); |
| 307 } | 310 } |
| 311 AddMirrorDisplayInfoIfAny(&display_info_list); |
| 308 UpdateDisplays(display_info_list); | 312 UpdateDisplays(display_info_list); |
| 309 } | 313 } |
| 310 | 314 |
| 311 void DisplayManager::RegisterDisplayProperty( | 315 void DisplayManager::RegisterDisplayProperty( |
| 312 int64 display_id, | 316 int64 display_id, |
| 313 gfx::Display::Rotation rotation, | 317 gfx::Display::Rotation rotation, |
| 314 float ui_scale, | 318 float ui_scale, |
| 315 const gfx::Insets* overscan_insets) { | 319 const gfx::Insets* overscan_insets) { |
| 316 if (display_info_.find(display_id) == display_info_.end()) { | 320 if (display_info_.find(display_id) == display_info_.end()) { |
| 317 display_info_[display_id] = | 321 display_info_[display_id] = |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 404 } | 408 } |
| 405 UpdateDisplays(new_display_info_list); | 409 UpdateDisplays(new_display_info_list); |
| 406 } | 410 } |
| 407 | 411 |
| 408 void DisplayManager::UpdateDisplays() { | 412 void DisplayManager::UpdateDisplays() { |
| 409 DisplayInfoList display_info_list; | 413 DisplayInfoList display_info_list; |
| 410 for (DisplayList::const_iterator iter = displays_.begin(); | 414 for (DisplayList::const_iterator iter = displays_.begin(); |
| 411 iter != displays_.end(); ++iter) { | 415 iter != displays_.end(); ++iter) { |
| 412 display_info_list.push_back(GetDisplayInfo(iter->id())); | 416 display_info_list.push_back(GetDisplayInfo(iter->id())); |
| 413 } | 417 } |
| 418 AddMirrorDisplayInfoIfAny(&display_info_list); |
| 414 UpdateDisplays(display_info_list); | 419 UpdateDisplays(display_info_list); |
| 415 } | 420 } |
| 416 | 421 |
| 417 void DisplayManager::UpdateDisplays( | 422 void DisplayManager::UpdateDisplays( |
| 418 const std::vector<DisplayInfo>& updated_display_info_list) { | 423 const std::vector<DisplayInfo>& updated_display_info_list) { |
| 419 DisplayInfoList new_display_info_list = updated_display_info_list; | 424 DisplayInfoList new_display_info_list = updated_display_info_list; |
| 420 std::sort(displays_.begin(), displays_.end(), DisplaySortFunctor()); | 425 std::sort(displays_.begin(), displays_.end(), DisplaySortFunctor()); |
| 421 std::sort(new_display_info_list.begin(), | 426 std::sort(new_display_info_list.begin(), |
| 422 new_display_info_list.end(), | 427 new_display_info_list.end(), |
| 423 DisplayInfoSortFunctor()); | 428 DisplayInfoSortFunctor()); |
| 424 DisplayList removed_displays; | 429 DisplayList removed_displays; |
| 425 std::vector<size_t> changed_display_indices; | 430 std::vector<size_t> changed_display_indices; |
| 426 std::vector<size_t> added_display_indices; | 431 std::vector<size_t> added_display_indices; |
| 427 | 432 |
| 428 DisplayList::iterator curr_iter = displays_.begin(); | 433 DisplayList::iterator curr_iter = displays_.begin(); |
| 429 DisplayInfoList::const_iterator new_info_iter = new_display_info_list.begin(); | 434 DisplayInfoList::const_iterator new_info_iter = new_display_info_list.begin(); |
| 430 | 435 |
| 431 DisplayList new_displays; | 436 DisplayList new_displays; |
| 432 bool update_mouse_location = false; | 437 bool update_mouse_location = false; |
| 433 | 438 |
| 434 scoped_ptr<MirrorWindowUpdater> mirror_window_updater; | 439 scoped_ptr<MirrorWindowUpdater> mirror_window_updater; |
| 435 // TODO(oshima): We may want to use external as the source. | 440 // Use the internal display or 1st as the mirror source, then scale |
| 441 // the root window so that it matches the external display's |
| 442 // resolution. This is necessary in order for scaling to work while |
| 443 // mirrored. |
| 436 int mirrored_display_id = gfx::Display::kInvalidDisplayID; | 444 int mirrored_display_id = gfx::Display::kInvalidDisplayID; |
| 437 if (software_mirroring_enabled_ && updated_display_info_list.size() == 2) | 445 if (software_mirroring_enabled_ && new_display_info_list.size() == 2) |
| 438 mirrored_display_id = updated_display_info_list[1].id(); | 446 mirrored_display_id = new_display_info_list[1].id(); |
| 439 | 447 |
| 440 while (curr_iter != displays_.end() || | 448 while (curr_iter != displays_.end() || |
| 441 new_info_iter != new_display_info_list.end()) { | 449 new_info_iter != new_display_info_list.end()) { |
| 442 if (new_info_iter != new_display_info_list.end() && | 450 if (new_info_iter != new_display_info_list.end() && |
| 443 mirrored_display_id == new_info_iter->id()) { | 451 mirrored_display_id == new_info_iter->id()) { |
| 444 InsertAndUpdateDisplayInfo(*new_info_iter); | 452 DisplayInfo info = *new_info_iter; |
| 453 info.SetOverscanInsets(true, gfx::Insets()); |
| 454 InsertAndUpdateDisplayInfo(info); |
| 455 |
| 445 mirrored_display_ = CreateDisplayFromDisplayInfoById(new_info_iter->id()); | 456 mirrored_display_ = CreateDisplayFromDisplayInfoById(new_info_iter->id()); |
| 446 mirror_window_updater.reset( | 457 mirror_window_updater.reset( |
| 447 new MirrorWindowCreator(display_info_[new_info_iter->id()])); | 458 new MirrorWindowCreator(display_info_[new_info_iter->id()])); |
| 448 ++new_info_iter; | 459 ++new_info_iter; |
| 449 // Remove existing external dispaly if it is going to be mirrored. | 460 // Remove existing external dispaly if it is going to be mirrored. |
| 450 if (curr_iter != displays_.end() && | 461 if (curr_iter != displays_.end() && |
| 451 curr_iter->id() == mirrored_display_id) { | 462 curr_iter->id() == mirrored_display_id) { |
| 452 removed_displays.push_back(*curr_iter); | 463 removed_displays.push_back(*curr_iter); |
| 453 ++curr_iter; | 464 ++curr_iter; |
| 454 } | 465 } |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 550 displays_.pop_back(); | 561 displays_.pop_back(); |
| 551 } | 562 } |
| 552 for (std::vector<size_t>::iterator iter = added_display_indices.begin(); | 563 for (std::vector<size_t>::iterator iter = added_display_indices.begin(); |
| 553 iter != added_display_indices.end(); ++iter) { | 564 iter != added_display_indices.end(); ++iter) { |
| 554 Shell::GetInstance()->screen()->NotifyDisplayAdded(displays_[*iter]); | 565 Shell::GetInstance()->screen()->NotifyDisplayAdded(displays_[*iter]); |
| 555 } | 566 } |
| 556 for (std::vector<size_t>::iterator iter = changed_display_indices.begin(); | 567 for (std::vector<size_t>::iterator iter = changed_display_indices.begin(); |
| 557 iter != changed_display_indices.end(); ++iter) { | 568 iter != changed_display_indices.end(); ++iter) { |
| 558 Shell::GetInstance()->screen()->NotifyBoundsChanged(displays_[*iter]); | 569 Shell::GetInstance()->screen()->NotifyBoundsChanged(displays_[*iter]); |
| 559 } | 570 } |
| 571 mirror_window_updater.reset(); |
| 560 display_controller->NotifyDisplayConfigurationChanged(); | 572 display_controller->NotifyDisplayConfigurationChanged(); |
| 561 if (update_mouse_location) | 573 if (update_mouse_location) |
| 562 display_controller->EnsurePointerInDisplays(); | 574 display_controller->EnsurePointerInDisplays(); |
| 563 else | 575 else |
| 564 display_controller->UpdateMouseCursor(mouse_location_in_native); | 576 display_controller->UpdateMouseCursor(mouse_location_in_native); |
| 565 | 577 |
| 566 #if defined(USE_X11) && defined(OS_CHROMEOS) | 578 #if defined(USE_X11) && defined(OS_CHROMEOS) |
| 567 if (!changed_display_indices.empty() && base::chromeos::IsRunningOnChromeOS()) | 579 if (!changed_display_indices.empty() && base::chromeos::IsRunningOnChromeOS()) |
| 568 ui::ClearX11DefaultRootWindow(); | 580 ui::ClearX11DefaultRootWindow(); |
| 569 #endif | 581 #endif |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 641 matching = &(*iter); | 653 matching = &(*iter); |
| 642 } | 654 } |
| 643 } | 655 } |
| 644 // Fallback to the primary display if there is no matching display. | 656 // Fallback to the primary display if there is no matching display. |
| 645 return matching ? *matching : DisplayController::GetPrimaryDisplay(); | 657 return matching ? *matching : DisplayController::GetPrimaryDisplay(); |
| 646 } | 658 } |
| 647 | 659 |
| 648 const DisplayInfo& DisplayManager::GetDisplayInfo(int64 display_id) const { | 660 const DisplayInfo& DisplayManager::GetDisplayInfo(int64 display_id) const { |
| 649 std::map<int64, DisplayInfo>::const_iterator iter = | 661 std::map<int64, DisplayInfo>::const_iterator iter = |
| 650 display_info_.find(display_id); | 662 display_info_.find(display_id); |
| 651 CHECK(iter != display_info_.end()); | 663 CHECK(iter != display_info_.end()) << display_id; |
| 652 return iter->second; | 664 return iter->second; |
| 653 } | 665 } |
| 654 | 666 |
| 655 std::string DisplayManager::GetDisplayNameForId(int64 id) { | 667 std::string DisplayManager::GetDisplayNameForId(int64 id) { |
| 656 if (id == gfx::Display::kInvalidDisplayID) | 668 if (id == gfx::Display::kInvalidDisplayID) |
| 657 return l10n_util::GetStringUTF8(IDS_ASH_STATUS_TRAY_UNKNOWN_DISPLAY_NAME); | 669 return l10n_util::GetStringUTF8(IDS_ASH_STATUS_TRAY_UNKNOWN_DISPLAY_NAME); |
| 658 | 670 |
| 659 std::map<int64, DisplayInfo>::const_iterator iter = display_info_.find(id); | 671 std::map<int64, DisplayInfo>::const_iterator iter = display_info_.find(id); |
| 660 if (iter != display_info_.end() && !iter->second.name().empty()) | 672 if (iter != display_info_.end() && !iter->second.name().empty()) |
| 661 return iter->second.name(); | 673 return iter->second.name(); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 701 if (num_connected_displays() == 1) { | 713 if (num_connected_displays() == 1) { |
| 702 // Layout the 2nd display below the primary as with the real device. | 714 // Layout the 2nd display below the primary as with the real device. |
| 703 aura::RootWindow* primary = Shell::GetPrimaryRootWindow(); | 715 aura::RootWindow* primary = Shell::GetPrimaryRootWindow(); |
| 704 gfx::Rect host_bounds = | 716 gfx::Rect host_bounds = |
| 705 gfx::Rect(primary->GetHostOrigin(), primary->GetHostSize()); | 717 gfx::Rect(primary->GetHostOrigin(), primary->GetHostSize()); |
| 706 new_display_info_list.push_back(DisplayInfo::CreateFromSpec( | 718 new_display_info_list.push_back(DisplayInfo::CreateFromSpec( |
| 707 base::StringPrintf( | 719 base::StringPrintf( |
| 708 "%d+%d-500x400", host_bounds.x(), host_bounds.bottom()))); | 720 "%d+%d-500x400", host_bounds.x(), host_bounds.bottom()))); |
| 709 } | 721 } |
| 710 num_connected_displays_ = new_display_info_list.size(); | 722 num_connected_displays_ = new_display_info_list.size(); |
| 723 mirrored_display_ = gfx::Display(); |
| 711 UpdateDisplays(new_display_info_list); | 724 UpdateDisplays(new_display_info_list); |
| 712 } | 725 } |
| 713 | 726 |
| 714 void DisplayManager::ToggleDisplayScaleFactor() { | 727 void DisplayManager::ToggleDisplayScaleFactor() { |
| 715 DCHECK(!displays_.empty()); | 728 DCHECK(!displays_.empty()); |
| 716 std::vector<DisplayInfo> new_display_info_list; | 729 std::vector<DisplayInfo> new_display_info_list; |
| 717 for (DisplayList::const_iterator iter = displays_.begin(); | 730 for (DisplayList::const_iterator iter = displays_.begin(); |
| 718 iter != displays_.end(); ++iter) { | 731 iter != displays_.end(); ++iter) { |
| 719 DisplayInfo display_info = GetDisplayInfo(iter->id()); | 732 DisplayInfo display_info = GetDisplayInfo(iter->id()); |
| 720 display_info.set_device_scale_factor( | 733 display_info.set_device_scale_factor( |
| 721 display_info.device_scale_factor() == 1.0f ? 2.0f : 1.0f); | 734 display_info.device_scale_factor() == 1.0f ? 2.0f : 1.0f); |
| 722 new_display_info_list.push_back(display_info); | 735 new_display_info_list.push_back(display_info); |
| 723 } | 736 } |
| 737 AddMirrorDisplayInfoIfAny(&new_display_info_list); |
| 724 UpdateDisplays(new_display_info_list); | 738 UpdateDisplays(new_display_info_list); |
| 725 } | 739 } |
| 726 | 740 |
| 727 void DisplayManager::OnRootWindowResized(const aura::RootWindow* root, | 741 void DisplayManager::OnRootWindowResized(const aura::RootWindow* root, |
| 728 const gfx::Size& old_size) { | 742 const gfx::Size& old_size) { |
| 729 if (change_display_upon_host_resize_) { | 743 if (change_display_upon_host_resize_) { |
| 730 gfx::Display& display = FindDisplayForRootWindow(root); | 744 gfx::Display& display = FindDisplayForRootWindow(root); |
| 731 gfx::Size old_display_size_in_pixel = display.GetSizeInPixel(); | 745 gfx::Size old_display_size_in_pixel = display.GetSizeInPixel(); |
| 732 display_info_[display.id()].SetBounds( | 746 display_info_[display.id()].SetBounds( |
| 733 gfx::Rect(root->GetHostOrigin(), root->GetHostSize())); | 747 gfx::Rect(root->GetHostOrigin(), root->GetHostSize())); |
| 734 const gfx::Size& new_root_size = root->bounds().size(); | 748 const gfx::Size& new_root_size = root->bounds().size(); |
| 749 // It's tricky to support resizing mirror window on desktop. |
| 750 if (software_mirroring_enabled_ && mirrored_display_.id() == display.id()) |
| 751 return; |
| 735 if (old_size != new_root_size) { | 752 if (old_size != new_root_size) { |
| 736 display.SetSize(display_info_[display.id()].size_in_pixel()); | 753 display.SetSize(display_info_[display.id()].size_in_pixel()); |
| 737 Shell::GetInstance()->screen()->NotifyBoundsChanged(display); | 754 Shell::GetInstance()->screen()->NotifyBoundsChanged(display); |
| 755 Shell::GetInstance()->mirror_window_controller()-> |
| 756 UpdateWindow(); |
| 738 } | 757 } |
| 739 } | 758 } |
| 740 } | 759 } |
| 741 | 760 |
| 742 void DisplayManager::SetSoftwareMirroring(bool enabled) { | 761 void DisplayManager::SetSoftwareMirroring(bool enabled) { |
| 743 software_mirroring_enabled_ = enabled; | 762 software_mirroring_enabled_ = enabled; |
| 744 mirrored_display_ = gfx::Display(); | 763 mirrored_display_ = gfx::Display(); |
| 745 } | 764 } |
| 746 | 765 |
| 747 int64 DisplayManager::GetDisplayIdForUIScaling() const { | 766 int64 DisplayManager::GetDisplayIdForUIScaling() const { |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 791 gfx::Display& DisplayManager::FindDisplayForId(int64 id) { | 810 gfx::Display& DisplayManager::FindDisplayForId(int64 id) { |
| 792 for (DisplayList::iterator iter = displays_.begin(); | 811 for (DisplayList::iterator iter = displays_.begin(); |
| 793 iter != displays_.end(); ++iter) { | 812 iter != displays_.end(); ++iter) { |
| 794 if ((*iter).id() == id) | 813 if ((*iter).id() == id) |
| 795 return *iter; | 814 return *iter; |
| 796 } | 815 } |
| 797 DLOG(WARNING) << "Could not find display:" << id; | 816 DLOG(WARNING) << "Could not find display:" << id; |
| 798 return GetInvalidDisplay(); | 817 return GetInvalidDisplay(); |
| 799 } | 818 } |
| 800 | 819 |
| 820 void DisplayManager::AddMirrorDisplayInfoIfAny( |
| 821 std::vector<DisplayInfo>* display_info_list) { |
| 822 if (software_mirroring_enabled_ && mirrored_display_.is_valid()) |
| 823 display_info_list->push_back(GetDisplayInfo(mirrored_display_.id())); |
| 824 } |
| 825 |
| 801 void DisplayManager::AddDisplayFromSpec(const std::string& spec) { | 826 void DisplayManager::AddDisplayFromSpec(const std::string& spec) { |
| 802 DisplayInfo display_info = DisplayInfo::CreateFromSpec(spec); | 827 DisplayInfo display_info = DisplayInfo::CreateFromSpec(spec); |
| 803 InsertAndUpdateDisplayInfo(display_info); | 828 InsertAndUpdateDisplayInfo(display_info); |
| 804 gfx::Display display = CreateDisplayFromDisplayInfoById(display_info.id()); | 829 gfx::Display display = CreateDisplayFromDisplayInfoById(display_info.id()); |
| 805 displays_.push_back(display); | 830 displays_.push_back(display); |
| 806 } | 831 } |
| 807 | 832 |
| 808 void DisplayManager::InsertAndUpdateDisplayInfo(const DisplayInfo& new_info) { | 833 void DisplayManager::InsertAndUpdateDisplayInfo(const DisplayInfo& new_info) { |
| 809 std::map<int64, DisplayInfo>::iterator info = | 834 std::map<int64, DisplayInfo>::iterator info = |
| 810 display_info_.find(new_info.id()); | 835 display_info_.find(new_info.id()); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 828 // always (0,0) and the secondary display's bounds will be updated | 853 // always (0,0) and the secondary display's bounds will be updated |
| 829 // by |DisplayController::UpdateDisplayBoundsForLayout|. | 854 // by |DisplayController::UpdateDisplayBoundsForLayout|. |
| 830 new_display.SetScaleAndBounds( | 855 new_display.SetScaleAndBounds( |
| 831 display_info.device_scale_factor(), gfx::Rect(bounds_in_pixel.size())); | 856 display_info.device_scale_factor(), gfx::Rect(bounds_in_pixel.size())); |
| 832 new_display.set_rotation(display_info.rotation()); | 857 new_display.set_rotation(display_info.rotation()); |
| 833 return new_display; | 858 return new_display; |
| 834 } | 859 } |
| 835 | 860 |
| 836 } // namespace internal | 861 } // namespace internal |
| 837 } // namespace ash | 862 } // namespace ash |
| OLD | NEW |