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

Side by Side Diff: ash/display/display_manager.cc

Issue 12254040: Revert 182494 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 7 years, 10 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 | Annotate | Revision Log
« no previous file with comments | « ash/display/display_manager.h ('k') | ash/display/event_transformation_handler.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Property Changes:
Added: svn:mergeinfo
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "ash/display/display_manager.h" 5 #include "ash/display/display_manager.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "ash/display/display_controller.h" 10 #include "ash/display/display_controller.h"
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 84
85 using aura::RootWindow; 85 using aura::RootWindow;
86 using aura::Window; 86 using aura::Window;
87 using std::string; 87 using std::string;
88 using std::vector; 88 using std::vector;
89 89
90 DEFINE_WINDOW_PROPERTY_KEY(int64, kDisplayIdKey, 90 DEFINE_WINDOW_PROPERTY_KEY(int64, kDisplayIdKey,
91 gfx::Display::kInvalidDisplayID); 91 gfx::Display::kInvalidDisplayID);
92 92
93 DisplayManager::DisplayManager() : 93 DisplayManager::DisplayManager() :
94 internal_display_id_(gfx::Display::kInvalidDisplayID),
94 force_bounds_changed_(false) { 95 force_bounds_changed_(false) {
95 Init(); 96 Init();
96 } 97 }
97 98
98 DisplayManager::~DisplayManager() { 99 DisplayManager::~DisplayManager() {
99 } 100 }
100 101
101 // static 102 // static
102 void DisplayManager::CycleDisplay() { 103 void DisplayManager::CycleDisplay() {
103 Shell::GetInstance()->display_manager()->CycleDisplayImpl(); 104 Shell::GetInstance()->display_manager()->CycleDisplayImpl();
104 } 105 }
105 106
106 // static 107 // static
107 void DisplayManager::ToggleDisplayScale() { 108 void DisplayManager::ToggleDisplayScale() {
108 Shell::GetInstance()->display_manager()->ScaleDisplayImpl(); 109 Shell::GetInstance()->display_manager()->ScaleDisplayImpl();
109 } 110 }
110 111
111 bool DisplayManager::IsActiveDisplay(const gfx::Display& display) const { 112 bool DisplayManager::IsActiveDisplay(const gfx::Display& display) const {
112 for (DisplayList::const_iterator iter = displays_.begin(); 113 for (DisplayList::const_iterator iter = displays_.begin();
113 iter != displays_.end(); ++iter) { 114 iter != displays_.end(); ++iter) {
114 if ((*iter).id() == display.id()) 115 if ((*iter).id() == display.id())
115 return true; 116 return true;
116 } 117 }
117 return false; 118 return false;
118 } 119 }
119 120
120 bool DisplayManager::HasInternalDisplay() const { 121 bool DisplayManager::HasInternalDisplay() const {
121 return gfx::Display::InternalDisplayId() != gfx::Display::kInvalidDisplayID; 122 return internal_display_id_ != gfx::Display::kInvalidDisplayID;
122 } 123 }
123 124
124 bool DisplayManager::IsInternalDisplayId(int64 id) const { 125 bool DisplayManager::IsInternalDisplayId(int64 id) const {
125 return gfx::Display::InternalDisplayId() == id; 126 return internal_display_id_ == id;
126 } 127 }
127 128
128 bool DisplayManager::UpdateWorkAreaOfDisplayNearestWindow( 129 bool DisplayManager::UpdateWorkAreaOfDisplayNearestWindow(
129 const aura::Window* window, 130 const aura::Window* window,
130 const gfx::Insets& insets) { 131 const gfx::Insets& insets) {
131 const RootWindow* root = window->GetRootWindow(); 132 const RootWindow* root = window->GetRootWindow();
132 gfx::Display& display = FindDisplayForRootWindow(root); 133 gfx::Display& display = FindDisplayForRootWindow(root);
133 gfx::Rect old_work_area = display.work_area(); 134 gfx::Rect old_work_area = display.work_area();
134 display.UpdateWorkAreaFromInsets(insets); 135 display.UpdateWorkAreaFromInsets(insets);
135 return old_work_area != display.work_area(); 136 return old_work_area != display.work_area();
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 // - the device is suspended. (kernel turns off all displays) 178 // - the device is suspended. (kernel turns off all displays)
178 // - the internal display's brightness is set to 0 and no external 179 // - the internal display's brightness is set to 0 and no external
179 // display is connected. 180 // display is connected.
180 // - the internal display's brightness is 0 and external display is 181 // - the internal display's brightness is 0 and external display is
181 // disconnected. 182 // disconnected.
182 // The display will be updated when one of displays is turned on, and the 183 // The display will be updated when one of displays is turned on, and the
183 // display list will be updated correctly. 184 // display list will be updated correctly.
184 return; 185 return;
185 } 186 }
186 DisplayList new_displays = updated_displays; 187 DisplayList new_displays = updated_displays;
187 if (HasInternalDisplay()) { 188 if (internal_display_id_ != gfx::Display::kInvalidDisplayID) {
188 bool internal_display_connected = false; 189 bool internal_display_connected = false;
189 for (DisplayList::const_iterator iter = updated_displays.begin(); 190 for (DisplayList::const_iterator iter = updated_displays.begin();
190 iter != updated_displays.end(); ++iter) { 191 iter != updated_displays.end(); ++iter) {
191 if ((*iter).IsInternal()) { 192 if ((*iter).id() == internal_display_id_) {
192 internal_display_connected = true; 193 internal_display_connected = true;
193 // Update the internal display cache. 194 // Update the internal display cache.
194 internal_display_.reset(new gfx::Display); 195 internal_display_.reset(new gfx::Display);
195 *internal_display_.get() = *iter; 196 *internal_display_.get() = *iter;
196 break; 197 break;
197 } 198 }
198 } 199 }
199 // If the internal display wasn't connected, use the cached value. 200 // If the internal display wasn't connected, use the cached value.
200 if (!internal_display_connected) { 201 if (!internal_display_connected) {
201 // Internal display may be reported as disconnect during startup time. 202 // Internal display may be reported as disconnect during startup time.
202 if (!internal_display_.get()) { 203 if (!internal_display_.get()) {
203 internal_display_.reset( 204 internal_display_.reset(new gfx::Display(internal_display_id_,
204 new gfx::Display(gfx::Display::InternalDisplayId(), 205 gfx::Rect(800, 600)));
205 gfx::Rect(800, 600)));
206 } 206 }
207 new_displays.push_back(*internal_display_.get()); 207 new_displays.push_back(*internal_display_.get());
208 } 208 }
209 } else { 209 } else {
210 new_displays = updated_displays; 210 new_displays = updated_displays;
211 } 211 }
212 212
213 RefreshDisplayInfo(); 213 RefreshDisplayInfo();
214 214
215 for (DisplayList::const_iterator iter = new_displays.begin(); 215 for (DisplayList::const_iterator iter = new_displays.begin();
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
434 434
435 void DisplayManager::Init() { 435 void DisplayManager::Init() {
436 #if defined(OS_CHROMEOS) 436 #if defined(OS_CHROMEOS)
437 if (base::chromeos::IsRunningOnChromeOS()) { 437 if (base::chromeos::IsRunningOnChromeOS()) {
438 std::vector<XID> outputs; 438 std::vector<XID> outputs;
439 ui::GetOutputDeviceHandles(&outputs); 439 ui::GetOutputDeviceHandles(&outputs);
440 std::vector<std::string> output_names = ui::GetOutputNames(outputs); 440 std::vector<std::string> output_names = ui::GetOutputNames(outputs);
441 for (size_t i = 0; i < output_names.size(); ++i) { 441 for (size_t i = 0; i < output_names.size(); ++i) {
442 if (chromeos::OutputConfigurator::IsInternalOutputName( 442 if (chromeos::OutputConfigurator::IsInternalOutputName(
443 output_names[i])) { 443 output_names[i])) {
444 gfx::Display::SetInternalDisplayId( 444 internal_display_id_ = GetDisplayIdForOutput(outputs[i], i);
445 GetDisplayIdForOutput(outputs[i], i));
446 break; 445 break;
447 } 446 }
448 } 447 }
449 } 448 }
450 #endif 449 #endif
451 450
452 RefreshDisplayInfo(); 451 RefreshDisplayInfo();
453 452
454 #if defined(OS_WIN) 453 #if defined(OS_WIN)
455 if (base::win::GetVersion() >= base::win::VERSION_WIN8) 454 if (base::win::GetVersion() >= base::win::VERSION_WIN8)
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
524 gfx::Display display = aura::CreateDisplayFromSpec(spec); 523 gfx::Display display = aura::CreateDisplayFromSpec(spec);
525 524
526 const gfx::Insets insets = display.GetWorkAreaInsets(); 525 const gfx::Insets insets = display.GetWorkAreaInsets();
527 const gfx::Rect& native_bounds = display.bounds_in_pixel(); 526 const gfx::Rect& native_bounds = display.bounds_in_pixel();
528 display.SetScaleAndBounds(display.device_scale_factor(), native_bounds); 527 display.SetScaleAndBounds(display.device_scale_factor(), native_bounds);
529 display.UpdateWorkAreaFromInsets(insets); 528 display.UpdateWorkAreaFromInsets(insets);
530 displays_.push_back(display); 529 displays_.push_back(display);
531 } 530 }
532 531
533 int64 DisplayManager::SetFirstDisplayAsInternalDisplayForTest() { 532 int64 DisplayManager::SetFirstDisplayAsInternalDisplayForTest() {
534 gfx::Display::SetInternalDisplayId(displays_[0].id()); 533 internal_display_id_ = displays_[0].id();
535 internal_display_.reset(new gfx::Display); 534 internal_display_.reset(new gfx::Display);
536 *internal_display_ = displays_[0]; 535 *internal_display_ = displays_[0];
537 return gfx::Display::InternalDisplayId(); 536 return internal_display_id_;
538 } 537 }
539 538
540 void DisplayManager::EnsurePointerInDisplays() { 539 void DisplayManager::EnsurePointerInDisplays() {
541 // Don't try to move the pointer during the boot/startup. 540 // Don't try to move the pointer during the boot/startup.
542 if (!DisplayController::HasPrimaryDisplay()) 541 if (!DisplayController::HasPrimaryDisplay())
543 return; 542 return;
544 gfx::Point location_in_screen = Shell::GetScreen()->GetCursorScreenPoint(); 543 gfx::Point location_in_screen = Shell::GetScreen()->GetCursorScreenPoint();
545 gfx::Point target_location; 544 gfx::Point target_location;
546 int64 closest_distance_squared = -1; 545 int64 closest_distance_squared = -1;
547 546
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
619 (*iter_to_update).set_id((*iter).id()); 618 (*iter_to_update).set_id((*iter).id());
620 } 619 }
621 } 620 }
622 621
623 void DisplayManager::SetHasOverscanFlagForTest(int64 id, bool has_overscan) { 622 void DisplayManager::SetHasOverscanFlagForTest(int64 id, bool has_overscan) {
624 display_info_[id].has_overscan = has_overscan; 623 display_info_[id].has_overscan = has_overscan;
625 } 624 }
626 625
627 } // namespace internal 626 } // namespace internal
628 } // namespace ash 627 } // namespace ash
OLDNEW
« no previous file with comments | « ash/display/display_manager.h ('k') | ash/display/event_transformation_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698