diff options
author | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-31 20:48:39 +0000 |
---|---|---|
committer | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-31 20:48:39 +0000 |
commit | 5378d79012fc21aad9df86c7502f0b8cf4daf8f3 (patch) | |
tree | 8b9eccd48cbebb7411844ca4d35ef8a5a1520165 /chromeos | |
parent | 4fc24b6fc8a2f232edd5b05d16d5985e298f5bdc (diff) | |
download | chromium_src-5378d79012fc21aad9df86c7502f0b8cf4daf8f3.zip chromium_src-5378d79012fc21aad9df86c7502f0b8cf4daf8f3.tar.gz chromium_src-5378d79012fc21aad9df86c7502f0b8cf4daf8f3.tar.bz2 |
Don't try to switch display mode if there is no external display
Switch to Dual Display in Login screen.
BUG=145844,145158
Review URL: https://chromiumcodereview.appspot.com/10899024
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@154499 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chromeos')
-rw-r--r-- | chromeos/display/output_configurator.cc | 17 | ||||
-rw-r--r-- | chromeos/display/output_configurator.h | 5 |
2 files changed, 12 insertions, 10 deletions
diff --git a/chromeos/display/output_configurator.cc b/chromeos/display/output_configurator.cc index 38aef89..d94215f 100644 --- a/chromeos/display/output_configurator.cc +++ b/chromeos/display/output_configurator.cc @@ -221,6 +221,7 @@ static float ComputeDeviceScaleFactor(unsigned int width, OutputConfigurator::OutputConfigurator() : is_running_on_chrome_os_(base::chromeos::IsRunningOnChromeOS()), output_count_(0), + connected_output_count_(0), output_cache_(NULL), mirror_supported_(false), primary_output_index_(-1), @@ -359,6 +360,9 @@ bool OutputConfigurator::ScreenPowerSet(bool power_on, bool all_displays) { } bool OutputConfigurator::SetDisplayMode(OutputState new_state) { + if (output_state_ == new_state) + return true; + if (output_state_ == STATE_INVALID || output_state_ == STATE_HEADLESS || output_state_ == STATE_SINGLE) @@ -421,8 +425,6 @@ void OutputConfigurator::RemoveObserver(Observer* observer) { bool OutputConfigurator::TryRecacheOutputs(Display* display, XRRScreenResources* screen) { bool outputs_did_change = false; - int previous_connected_count = 0; - int new_connected_count = 0; if (output_count_ != screen->noutput) { outputs_did_change = true; @@ -435,11 +437,6 @@ bool OutputConfigurator::TryRecacheOutputs(Display* display, bool now_connected = (RR_Connected == output->connection); outputs_did_change = (now_connected != output_cache_[i].is_connected); XRRFreeOutputInfo(output); - - if (output_cache_[i].is_connected) - previous_connected_count += 1; - if (now_connected) - new_connected_count += 1; } } @@ -811,17 +808,17 @@ void OutputConfigurator::CheckIsProjectingAndNotify() { // Determine if there is an "internal" output and how many outputs are // connected. bool has_internal_output = false; - int connected_output_count = 0; + connected_output_count_ = 0; for (int i = 0; i < output_count_; ++i) { if (output_cache_[i].is_connected) { - connected_output_count += 1; + connected_output_count_ += 1; has_internal_output |= output_cache_[i].is_internal; } } // "Projecting" is defined as having more than 1 output connected while at // least one of them is an internal output. - bool is_projecting = has_internal_output && (connected_output_count > 1); + bool is_projecting = has_internal_output && (connected_output_count_ > 1); chromeos::DBusThreadManager::Get()->GetPowerManagerClient() ->SetIsProjecting(is_projecting); } diff --git a/chromeos/display/output_configurator.h b/chromeos/display/output_configurator.h index 6c526c8..32338b1 100644 --- a/chromeos/display/output_configurator.h +++ b/chromeos/display/output_configurator.h @@ -52,6 +52,8 @@ class CHROMEOS_EXPORT OutputConfigurator : public MessageLoop::Dispatcher { OutputConfigurator(); virtual ~OutputConfigurator(); + int connected_output_count() const { return connected_output_count_; } + OutputState output_state() const { return output_state_; } // Called when the user hits ctrl-F4 to request a display mode change. @@ -154,6 +156,9 @@ class CHROMEOS_EXPORT OutputConfigurator : public MessageLoop::Dispatcher { // The number of outputs in the output_cache_ array. int output_count_; + // The number of outputs that are connected. + int connected_output_count_; + // The list of cached output descriptions (|output_count_| elements long). scoped_array<CachedOutputDescription> output_cache_; |