summaryrefslogtreecommitdiffstats
path: root/chromeos/display
diff options
context:
space:
mode:
authoroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-28 02:49:36 +0000
committeroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-28 02:49:36 +0000
commit947f36a7de0b78169ff8e1bb851f528068bb1ecd (patch)
tree0c260765f896705691acd46672a0b3585c71ec8f /chromeos/display
parent6779453b2d9539938811c58049b4da84944d8a31 (diff)
downloadchromium_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.cc19
-rw-r--r--chromeos/display/output_configurator.h5
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.