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), |