diff options
Diffstat (limited to 'ash/display')
-rw-r--r-- | ash/display/display_change_observer_chromeos.cc | 16 | ||||
-rw-r--r-- | ash/display/display_info.cc | 12 | ||||
-rw-r--r-- | ash/display/display_info.h | 3 | ||||
-rw-r--r-- | ash/display/display_manager.cc | 3 |
4 files changed, 23 insertions, 11 deletions
diff --git a/ash/display/display_change_observer_chromeos.cc b/ash/display/display_change_observer_chromeos.cc index 461b7be..97c9d26 100644 --- a/ash/display/display_change_observer_chromeos.cc +++ b/ash/display/display_change_observer_chromeos.cc @@ -158,15 +158,17 @@ void DisplayChangeObserver::OnDisplayModeChanged( ids.insert(id); displays.push_back(DisplayInfo(id, name, has_overscan)); - displays.back().set_device_scale_factor(device_scale_factor); - displays.back().SetBounds(display_bounds); - displays.back().set_native(true); - displays.back().set_display_modes(display_modes); - displays.back().set_touch_support( + DisplayInfo& new_info = displays.back(); + new_info.set_device_scale_factor(device_scale_factor); + new_info.SetBounds(display_bounds); + new_info.set_native(true); + new_info.set_display_modes(display_modes); + new_info.set_touch_support( output.touch_device_id == 0 ? gfx::Display::TOUCH_SUPPORT_UNAVAILABLE : gfx::Display::TOUCH_SUPPORT_AVAILABLE); - displays.back().set_available_color_profiles( - output.available_color_profiles); + new_info.set_available_color_profiles( + Shell::GetInstance()->output_configurator()-> + GetAvailableColorCalibrationProfiles(id)); } // DisplayManager can be null during the boot. diff --git a/ash/display/display_info.cc b/ash/display/display_info.cc index 25b6a74..e3a4b63 100644 --- a/ash/display/display_info.cc +++ b/ash/display/display_info.cc @@ -305,11 +305,15 @@ std::string DisplayInfo::ToFullString() const { } void DisplayInfo::SetColorProfile(ui::ColorCalibrationProfile profile) { - if (std::find(available_color_profiles_.begin(), - available_color_profiles_.end(), - profile) != available_color_profiles_.end()) { + if (IsColorProfileAvailable(profile)) color_profile_ = profile; - } +} + +bool DisplayInfo::IsColorProfileAvailable( + ui::ColorCalibrationProfile profile) const { + return std::find(available_color_profiles_.begin(), + available_color_profiles_.end(), + profile) != available_color_profiles_.end(); } } // namespace internal diff --git a/ash/display/display_info.h b/ash/display/display_info.h index d47ac37..14af285 100644 --- a/ash/display/display_info.h +++ b/ash/display/display_info.h @@ -163,6 +163,9 @@ class ASH_EXPORT DisplayInfo { // |available_color_profiles_|. void SetColorProfile(ui::ColorCalibrationProfile profile); + // Returns true if |profile| is in |available_color_profiles_|. + bool IsColorProfileAvailable(ui::ColorCalibrationProfile profile) const; + const std::vector<ui::ColorCalibrationProfile>& available_color_profiles() const { return available_color_profiles_; diff --git a/ash/display/display_manager.cc b/ash/display/display_manager.cc index c548428..8c02f44 100644 --- a/ash/display/display_manager.cc +++ b/ash/display/display_manager.cc @@ -508,6 +508,9 @@ void DisplayManager::SetColorCalibrationProfile( int64 display_id, ui::ColorCalibrationProfile profile) { #if defined(OS_CHROMEOS) + if (!display_info_[display_id].IsColorProfileAvailable(profile)) + return; + if (delegate_) delegate_->PreDisplayConfigurationChange(false); if (Shell::GetInstance()->output_configurator()->SetColorCalibrationProfile( |