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

Unified Diff: ash/display/display_controller.cc

Issue 12505005: Store rotation/ui scale to local state. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 9 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
« no previous file with comments | « ash/display/display_controller.h ('k') | ash/display/display_manager.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/display/display_controller.cc
diff --git a/ash/display/display_controller.cc b/ash/display/display_controller.cc
index e777dfc577d71c5444157ec7f770ae4a1792ca87..6c146ef9e077062791409fe4d90a6baad1b336c6 100644
--- a/ash/display/display_controller.cc
+++ b/ash/display/display_controller.cc
@@ -82,6 +82,7 @@ const int64 kSwapDisplayThrottleTimeoutMs = 500;
// Persistent key names
const char kPositionKey[] = "position";
const char kOffsetKey[] = "offset";
+const char kMirroredKey[] = "mirrored";
bool GetPositionFromString(const base::StringPiece& position,
DisplayLayout::Position* field) {
@@ -205,17 +206,21 @@ void SetDisplayPropertiesOnHostWindow(aura::RootWindow* root,
// DisplayLayout
// static
-DisplayLayout DisplayLayout::FromInts(int position, int offsets) {
- return DisplayLayout(static_cast<Position>(position), offsets);
+DisplayLayout DisplayLayout::FromInts(int position, int offsets, bool mirror) {
+ return DisplayLayout(static_cast<Position>(position), offsets, mirror);
}
DisplayLayout::DisplayLayout()
: position(RIGHT),
- offset(0) {}
+ offset(0),
+ mirrored(false) {}
-DisplayLayout::DisplayLayout(DisplayLayout::Position position, int offset)
+DisplayLayout::DisplayLayout(DisplayLayout::Position position,
+ int offset,
+ bool mirrored)
: position(position),
- offset(offset) {
+ offset(offset),
+ mirrored(mirrored) {
DCHECK_LE(TOP, position);
DCHECK_GE(LEFT, position);
@@ -243,7 +248,7 @@ DisplayLayout DisplayLayout::Invert() const {
inverted_position = RIGHT;
break;
}
- return DisplayLayout(inverted_position, -offset);
+ return DisplayLayout(inverted_position, -offset, mirrored);
}
// static
@@ -263,6 +268,7 @@ bool DisplayLayout::ConvertToValue(const DisplayLayout& layout,
const std::string position_str = GetStringFromPosition(layout.position);
dict_value->SetString(kPositionKey, position_str);
dict_value->SetInteger(kOffsetKey, layout.offset);
+ dict_value->SetBoolean(kMirroredKey, layout.mirrored);
return true;
}
@@ -277,6 +283,7 @@ void DisplayLayout::RegisterJSONConverter(
converter->RegisterCustomField<Position>(
kPositionKey, &DisplayLayout::position, &GetPositionFromString);
converter->RegisterIntField(kOffsetKey, &DisplayLayout::offset);
+ converter->RegisterBoolField(kMirroredKey, &DisplayLayout::mirrored);
}
////////////////////////////////////////////////////////////////////////////////
@@ -870,6 +877,15 @@ void DisplayController::NotifyDisplayConfigurationChanging() {
}
void DisplayController::NotifyDisplayConfigurationChanged() {
+ internal::DisplayManager* display_manager = GetDisplayManager();
+ if (display_manager->num_connected_displays() > 1) {
+ bool mirrored = display_manager->IsMirrored();
+ DisplayIdPair pair = mirrored ?
+ std::make_pair(GetPrimaryDisplay().id(),
+ display_manager->mirrored_display_id()) :
+ GetCurrentDisplayIdPair();
+ paired_layouts_[pair].mirrored = mirrored;
+ }
FOR_EACH_OBSERVER(Observer, observers_, OnDisplayConfigurationChanged());
}
« no previous file with comments | « ash/display/display_controller.h ('k') | ash/display/display_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698