diff options
author | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-28 02:49:36 +0000 |
---|---|---|
committer | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-28 02:49:36 +0000 |
commit | 947f36a7de0b78169ff8e1bb851f528068bb1ecd (patch) | |
tree | 0c260765f896705691acd46672a0b3585c71ec8f /chromeos/display | |
parent | 6779453b2d9539938811c58049b4da84944d8a31 (diff) | |
download | chromium_src-947f36a7de0b78169ff8e1bb851f528068bb1ecd.zip chromium_src-947f36a7de0b78169ff8e1bb851f528068bb1ecd.tar.gz chromium_src-947f36a7de0b78169ff8e1bb851f528068bb1ecd.tar.bz2 |
Don't handle display change event/requests to avoid being killed by session manager
BUG=177014
TEST=none
Review URL: https://chromiumcodereview.appspot.com/12367007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@185127 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chromeos/display')
-rw-r--r-- | chromeos/display/output_configurator.cc | 19 | ||||
-rw-r--r-- | chromeos/display/output_configurator.h | 5 |
2 files changed, 17 insertions, 7 deletions
diff --git a/chromeos/display/output_configurator.cc b/chromeos/display/output_configurator.cc index de22e2c..8bb89bf 100644 --- a/chromeos/display/output_configurator.cc +++ b/chromeos/display/output_configurator.cc @@ -526,7 +526,9 @@ bool IsOutputAspectPreservingScaling(Display* display, } // namespace OutputConfigurator::OutputConfigurator() - : is_running_on_chrome_os_(base::chromeos::IsRunningOnChromeOS()), + // If we aren't running on ChromeOS (like linux desktop), + // don't try to configure display. + : configure_display_(base::chromeos::IsRunningOnChromeOS()), is_panel_fitting_enabled_(false), connected_output_count_(0), xrandr_event_base_(0), @@ -543,7 +545,7 @@ OutputConfigurator::~OutputConfigurator() { void OutputConfigurator::Init(bool is_panel_fitting_enabled, uint32 background_color_argb) { TRACE_EVENT0("chromeos", "OutputConfigurator::Init"); - if (!is_running_on_chrome_os_) + if (!configure_display_) return; is_panel_fitting_enabled_ = is_panel_fitting_enabled; @@ -613,10 +615,14 @@ void OutputConfigurator::Init(bool is_panel_fitting_enabled, SetIsProjecting(is_projecting); } +void OutputConfigurator::Stop() { + configure_display_ = false; +} + bool OutputConfigurator::CycleDisplayMode() { TRACE_EVENT0("chromeos", "OutputConfigurator::CycleDisplayMode"); VLOG(1) << "CycleDisplayMode"; - if (!is_running_on_chrome_os_) + if (!configure_display_) return false; bool did_change = false; @@ -654,7 +660,7 @@ bool OutputConfigurator::ScreenPowerSet(bool power_on, bool all_displays) { TRACE_EVENT0("chromeos", "OutputConfigurator::ScreenPowerSet"); VLOG(1) << "OutputConfigurator::SetScreensOn " << power_on << " all displays " << all_displays; - if (!is_running_on_chrome_os_) + if (!configure_display_) return false; bool success = false; @@ -759,8 +765,9 @@ bool OutputConfigurator::Dispatch(const base::NativeEvent& event) { TRACE_EVENT0("chromeos", "OutputConfigurator::Dispatch"); if (event->type - xrandr_event_base_ == RRScreenChangeNotify) XRRUpdateConfiguration(event); - // Ignore this event if the Xrandr extension isn't supported. - if (!is_running_on_chrome_os_ || + // Ignore this event if the Xrandr extension isn't supported, or + // the device is being shutdown. + if (!configure_display_ || (event->type - xrandr_event_base_ != RRNotify)) { return true; } diff --git a/chromeos/display/output_configurator.h b/chromeos/display/output_configurator.h index ea96a3b..cd3420a 100644 --- a/chromeos/display/output_configurator.h +++ b/chromeos/display/output_configurator.h @@ -74,6 +74,9 @@ class CHROMEOS_EXPORT OutputConfigurator : public MessageLoop::Dispatcher { // color. void Init(bool is_panel_fitting_enabled, uint32 background_color_argb); + // Stop handling display configuration events/requests. + void Stop(); + // Called when the user hits ctrl-F4 to request a display mode change. // This method should only return false if it was called in a single-head or // headless mode. @@ -178,7 +181,7 @@ class CHROMEOS_EXPORT OutputConfigurator : public MessageLoop::Dispatcher { // Xrandr X11 extension is supported. // If this flag is set to false, any attempts to change the output // configuration to immediately fail without changing the state. - bool is_running_on_chrome_os_; + bool configure_display_; // This is set externally in Init, // and is used to enable modes which rely on panel fitting. |