Chromium Code Reviews| Index: chrome/browser/chromeos/display/overscan_calibrator.cc |
| diff --git a/chrome/browser/chromeos/display/overscan_calibrator.cc b/chrome/browser/chromeos/display/overscan_calibrator.cc |
| index d788f5f02d867e8ab33aaa198e99b941bbf6cd4b..c9d41b0a7e4585c91e065525feeb6951f64c238b 100644 |
| --- a/chrome/browser/chromeos/display/overscan_calibrator.cc |
| +++ b/chrome/browser/chromeos/display/overscan_calibrator.cc |
| @@ -5,10 +5,11 @@ |
| #include "chrome/browser/chromeos/display/overscan_calibrator.h" |
| #include "ash/display/display_controller.h" |
| +#include "ash/display/display_info.h" |
| +#include "ash/display/display_manager.h" |
| #include "ash/shell.h" |
| #include "ash/shell_window_ids.h" |
| #include "base/callback.h" |
| -#include "chrome/browser/chromeos/display/display_preferences.h" |
| #include "ui/aura/window.h" |
| #include "ui/compositor/layer.h" |
| #include "ui/gfx/canvas.h" |
| @@ -72,6 +73,14 @@ OverscanCalibrator::OverscanCalibrator( |
| ash::Shell::GetInstance()->display_controller()->SetOverscanInsets( |
| display_.id(), gfx::Insets()); |
| + ash::internal::DisplayInfo info = ash::Shell::GetInstance()-> |
| + display_manager()->GetDisplayInfo(display_.id()); |
| + if (info.has_overscan()) { |
| + info.clear_has_custom_overscan_insets(); |
| + info.UpdateDisplaySize(); |
| + native_insets_ = info.overscan_insets_in_dip(); |
| + } |
| + |
| aura::RootWindow* root = ash::Shell::GetInstance()->display_controller()-> |
| GetRootWindowForDisplayId(display_.id()); |
| ui::Layer* parent_layer = ash::Shell::GetContainer( |
| @@ -94,10 +103,25 @@ OverscanCalibrator::~OverscanCalibrator() { |
| } |
| void OverscanCalibrator::Commit() { |
| - SetAndStoreDisplayOverscan(display_, insets_); |
| + if (insets_ == native_insets_) { |
|
Jun Mukai
2013/03/22 00:53:07
Can we move this logic to the display controller?
oshima
2013/03/22 02:06:51
I think this is specific to calibration UI. There
|
| + ash::Shell::GetInstance()->display_controller()->ClearCustomOverscanInsets( |
| + display_.id()); |
| + } else { |
| + ash::Shell::GetInstance()->display_controller()->SetOverscanInsets( |
| + display_.id(), insets_); |
| + } |
| committed_ = true; |
| } |
| +void OverscanCalibrator::Reset() { |
| + if (!native_insets_.empty()) { |
| + insets_ = native_insets_; |
| + } else { |
| + insets_ = initial_insets_; |
| + } |
| + calibration_layer_->SchedulePaint(calibration_layer_->bounds()); |
| +} |
| + |
| void OverscanCalibrator::UpdateInsets(const gfx::Insets& insets) { |
| insets_.Set(std::max(insets.top(), 0), |
| std::max(insets.left(), 0), |