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

Unified Diff: chromeos/display/output_configurator.cc

Issue 10817028: Add Fade-out/Fade-in animation during output-configuration change. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: chromeos/display/output_configurator.cc
diff --git a/chromeos/display/output_configurator.cc b/chromeos/display/output_configurator.cc
index 60013092234cbe9ba6612111b451f5159126c88e..d3ac102235217753c043ce871f1f99608c6e5f72 100644
--- a/chromeos/display/output_configurator.cc
+++ b/chromeos/display/output_configurator.cc
@@ -16,6 +16,7 @@
#undef Status
#undef RootWindow
+#include "base/bind.h"
#include "base/chromeos/chromeos_version.h"
#include "base/logging.h"
#include "base/message_pump_aurax11.h"
@@ -756,19 +757,13 @@ bool OutputConfigurator::SetDisplayMode(State new_state) {
output_state_ == STATE_SINGLE)
return false;
- Display* display = base::MessagePumpAuraX11::GetDefaultXDisplay();
- CHECK(display != NULL);
- XGrabServer(display);
- Window window = DefaultRootWindow(display);
- XRRScreenResources* screen = XRRGetScreenResources(display, window);
- CHECK(screen != NULL);
-
- UpdateCacheAndXrandrToState(display,
- screen,
- window,
- new_state);
- XRRFreeScreenResources(screen);
- XUngrabServer(display);
+ if (animation_delegate_.get()) {
+ animation_delegate_->WillDisplayModeChange(
+ base::Bind(&OutputConfigurator::SetDisplayModeInternal,
+ base::Unretained(this), new_state));
oshima 2012/07/26 05:27:49 what happen if the display configuration changed d
Jun Mukai 2012/07/26 09:44:03 Added the output_state_ guards for STATE_INVALID/H
+ } else {
+ SetDisplayModeInternal(new_state);
+ }
return true;
}
@@ -793,6 +788,27 @@ bool OutputConfigurator::Dispatch(const base::NativeEvent& event) {
return true;
}
+void OutputConfigurator::SetDisplayModeInternal(State new_state) {
+ Display* display = base::MessagePumpAuraX11::GetDefaultXDisplay();
+ CHECK(display != NULL);
+ XGrabServer(display);
+ Window window = DefaultRootWindow(display);
+ XRRScreenResources* screen = XRRGetScreenResources(display, window);
+ CHECK(screen != NULL);
+
+ UpdateCacheAndXrandrToState(display,
+ screen,
+ window,
+ new_state);
+ XRRFreeScreenResources(screen);
+ XUngrabServer(display);
+ if (animation_delegate_.get()) {
+ MessageLoop::current()->PostTask(
+ FROM_HERE, base::Bind(&AnimationDelegate::OnDisplayModeChanged,
+ base::Unretained(animation_delegate_.get())));
+ }
+}
+
void OutputConfigurator::CheckIsProjectingAndNotify() {
// Determine if there is an "internal" output and how many outputs are
// connected.

Powered by Google App Engine
This is Rietveld 408576698