Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(605)

Side by Side Diff: ui/display/chromeos/display_configurator.cc

Issue 1130823003: Wait for display configuration to finish before suspending (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: unittests Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "ui/display/chromeos/display_configurator.h" 5 #include "ui/display/chromeos/display_configurator.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/sys_info.h" 10 #include "base/sys_info.h"
(...skipping 836 matching lines...) Expand 10 before | Expand all | Expand 10 after
847 } 847 }
848 848
849 void DisplayConfigurator::AddObserver(Observer* observer) { 849 void DisplayConfigurator::AddObserver(Observer* observer) {
850 observers_.AddObserver(observer); 850 observers_.AddObserver(observer);
851 } 851 }
852 852
853 void DisplayConfigurator::RemoveObserver(Observer* observer) { 853 void DisplayConfigurator::RemoveObserver(Observer* observer) {
854 observers_.RemoveObserver(observer); 854 observers_.RemoveObserver(observer);
855 } 855 }
856 856
857 void DisplayConfigurator::SuspendDisplays() { 857 void DisplayConfigurator::SuspendDisplays(
858 const ConfigurationCallback& callback) {
858 // If the display is off due to user inactivity and there's only a single 859 // If the display is off due to user inactivity and there's only a single
859 // internal display connected, switch to the all-on state before 860 // internal display connected, switch to the all-on state before
860 // suspending. This shouldn't be very noticeable to the user since the 861 // suspending. This shouldn't be very noticeable to the user since the
861 // backlight is off at this point, and doing this lets us resume directly 862 // backlight is off at this point, and doing this lets us resume directly
862 // into the "on" state, which greatly reduces resume times. 863 // into the "on" state, which greatly reduces resume times.
863 if (requested_power_state_ == chromeos::DISPLAY_POWER_ALL_OFF) { 864 if (requested_power_state_ == chromeos::DISPLAY_POWER_ALL_OFF) {
864 SetDisplayPower(chromeos::DISPLAY_POWER_ALL_ON, 865 SetDisplayPower(chromeos::DISPLAY_POWER_ALL_ON,
865 kSetDisplayPowerOnlyIfSingleInternalDisplay, 866 kSetDisplayPowerOnlyIfSingleInternalDisplay, callback);
866 base::Bind(&DoNothing));
867 867
868 // We need to make sure that the monitor configuration we just did actually 868 // We need to make sure that the monitor configuration we just did actually
869 // completes before we return, because otherwise the X message could be 869 // completes before we return, because otherwise the X message could be
870 // racing with the HandleSuspendReadiness message. 870 // racing with the HandleSuspendReadiness message.
871 native_display_delegate_->SyncWithServer(); 871 native_display_delegate_->SyncWithServer();
872 } else {
873 callback.Run(true);
872 } 874 }
873 875
874 displays_suspended_ = true; 876 displays_suspended_ = true;
875 877
876 // Stop |configure_timer_| because we will force probe and configure all the 878 // Stop |configure_timer_| because we will force probe and configure all the
877 // displays at resume time anyway. 879 // displays at resume time anyway.
878 configure_timer_.Stop(); 880 configure_timer_.Stop();
879 } 881 }
880 882
881 void DisplayConfigurator::ResumeDisplays() { 883 void DisplayConfigurator::ResumeDisplays() {
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
1023 FOR_EACH_OBSERVER( 1025 FOR_EACH_OBSERVER(
1024 Observer, observers_, OnDisplayModeChanged(cached_displays_)); 1026 Observer, observers_, OnDisplayModeChanged(cached_displays_));
1025 } else { 1027 } else {
1026 FOR_EACH_OBSERVER( 1028 FOR_EACH_OBSERVER(
1027 Observer, observers_, OnDisplayModeChangeFailed(cached_displays_, 1029 Observer, observers_, OnDisplayModeChangeFailed(cached_displays_,
1028 attempted_state)); 1030 attempted_state));
1029 } 1031 }
1030 } 1032 }
1031 1033
1032 } // namespace ui 1034 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698