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

Side by Side Diff: services/ui/ws/display.cc

Issue 2434923002: Handle modified displays in mustash. (Closed)
Patch Set: Fix PlatformScreenStub for tests. Created 4 years, 2 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
« no previous file with comments | « services/ui/ws/display.h ('k') | services/ui/ws/display_manager.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "services/ui/ws/display.h" 5 #include "services/ui/ws/display.h"
6 6
7 #include <set> 7 #include <set>
8 #include <utility> 8 #include <utility>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 display_ptr->is_primary = platform_display_->IsPrimaryDisplay(); 92 display_ptr->is_primary = platform_display_->IsPrimaryDisplay();
93 93
94 // TODO(sky): make this real. 94 // TODO(sky): make this real.
95 display_ptr->frame_decoration_values = mojom::FrameDecorationValues::New(); 95 display_ptr->frame_decoration_values = mojom::FrameDecorationValues::New();
96 return display_ptr; 96 return display_ptr;
97 } 97 }
98 98
99 display::Display Display::ToDisplay() const { 99 display::Display Display::ToDisplay() const {
100 display::Display display(GetId()); 100 display::Display display(GetId());
101 101
102 display.set_bounds(platform_display_->GetBounds()); 102 const display::ViewportMetrics& metrics =
103 // TODO(sky): window manager needs an API to set the work area. 103 platform_display_->GetViewportMetrics();
104 display.set_work_area(display.bounds()); 104
105 display.set_device_scale_factor(platform_display_->GetDeviceScaleFactor()); 105 display.set_bounds(metrics.bounds);
106 display.set_rotation(platform_display_->GetRotation()); 106 display.set_work_area(metrics.work_area);
107 display.set_device_scale_factor(metrics.device_scale_factor);
108 display.set_rotation(metrics.rotation);
107 display.set_touch_support( 109 display.set_touch_support(
108 display::Display::TouchSupport::TOUCH_SUPPORT_UNKNOWN); 110 display::Display::TouchSupport::TOUCH_SUPPORT_UNKNOWN);
109 111
110 return display; 112 return display;
111 } 113 }
112 114
113 void Display::SchedulePaint(const ServerWindow* window, 115 void Display::SchedulePaint(const ServerWindow* window,
114 const gfx::Rect& bounds) { 116 const gfx::Rect& bounds) {
115 DCHECK(root_->Contains(window)); 117 DCHECK(root_->Contains(window));
116 platform_display_->SchedulePaint(window, bounds); 118 platform_display_->SchedulePaint(window, bounds);
117 } 119 }
118 120
119 display::Display::Rotation Display::GetRotation() const {
120 return platform_display_->GetRotation();
121 }
122
123 gfx::Size Display::GetSize() const { 121 gfx::Size Display::GetSize() const {
124 return platform_display_->GetBounds().size(); 122 return platform_display_->GetBounds().size();
125 } 123 }
126 124
127 ServerWindow* Display::GetRootWithId(const WindowId& id) { 125 ServerWindow* Display::GetRootWithId(const WindowId& id) {
128 if (id == root_->id()) 126 if (id == root_->id())
129 return root_.get(); 127 return root_.get();
130 for (auto& pair : window_manager_display_root_map_) { 128 for (auto& pair : window_manager_display_root_map_) {
131 if (pair.second->root()->id() == id) 129 if (pair.second->root()->id() == id)
132 return pair.second->root(); 130 return pair.second->root();
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 window_server_->user_id_tracker()->active_id()) 300 window_server_->user_id_tracker()->active_id())
303 ->OnUserActivity(); 301 ->OnUserActivity();
304 } 302 }
305 303
306 void Display::OnNativeCaptureLost() { 304 void Display::OnNativeCaptureLost() {
307 WindowManagerDisplayRoot* display_root = GetActiveWindowManagerDisplayRoot(); 305 WindowManagerDisplayRoot* display_root = GetActiveWindowManagerDisplayRoot();
308 if (display_root) 306 if (display_root)
309 display_root->window_manager_state()->SetCapture(nullptr, kInvalidClientId); 307 display_root->window_manager_state()->SetCapture(nullptr, kInvalidClientId);
310 } 308 }
311 309
312 void Display::OnViewportMetricsChanged(const ViewportMetrics& old_metrics, 310 void Display::OnViewportMetricsChanged(
313 const ViewportMetrics& new_metrics) { 311 const display::ViewportMetrics& new_metrics) {
314 if (!root_) 312 if (!root_ || root_->bounds().size() == new_metrics.bounds.size())
315 return; 313 return;
316 314
317 gfx::Rect new_bounds(new_metrics.bounds.size()); 315 gfx::Rect new_bounds(new_metrics.bounds.size());
318 root_->SetBounds(new_bounds); 316 root_->SetBounds(new_bounds);
319 for (auto& pair : window_manager_display_root_map_) 317 for (auto& pair : window_manager_display_root_map_)
320 pair.second->root()->SetBounds(new_bounds); 318 pair.second->root()->SetBounds(new_bounds);
321
322 display_manager()->OnDisplayUpdate(this);
323 } 319 }
324 320
325 bool Display::CanHaveActiveChildren(ServerWindow* window) const { 321 bool Display::CanHaveActiveChildren(ServerWindow* window) const {
326 return window && activation_parents_.Contains(window); 322 return window && activation_parents_.Contains(window);
327 } 323 }
328 324
329 void Display::OnActivationChanged(ServerWindow* old_active_window, 325 void Display::OnActivationChanged(ServerWindow* old_active_window,
330 ServerWindow* new_active_window) { 326 ServerWindow* new_active_window) {
331 // Don't do anything here. We assume the window manager handles restacking. If 327 // Don't do anything here. We assume the window manager handles restacking. If
332 // we did attempt to restack than we would have to ensure clients see the 328 // we did attempt to restack than we would have to ensure clients see the
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
400 } 396 }
401 397
402 void Display::OnWindowManagerWindowTreeFactoryReady( 398 void Display::OnWindowManagerWindowTreeFactoryReady(
403 WindowManagerWindowTreeFactory* factory) { 399 WindowManagerWindowTreeFactory* factory) {
404 if (!binding_) 400 if (!binding_)
405 CreateWindowManagerDisplayRootFromFactory(factory); 401 CreateWindowManagerDisplayRootFromFactory(factory);
406 } 402 }
407 403
408 } // namespace ws 404 } // namespace ws
409 } // namespace ui 405 } // namespace ui
OLDNEW
« no previous file with comments | « services/ui/ws/display.h ('k') | services/ui/ws/display_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698