Index: services/ui/ws/display.cc |
diff --git a/services/ui/ws/display.cc b/services/ui/ws/display.cc |
index 42807955e82786a5f8674f19d483439130bd9d34..a7574023736322cc4615a71f0f7c667c4f0a7313 100644 |
--- a/services/ui/ws/display.cc |
+++ b/services/ui/ws/display.cc |
@@ -285,6 +285,19 @@ void Display::CreateWindowManagerDisplayRootFromFactory( |
std::move(display_root_ptr)); |
} |
+void Display::CreateRootWindow(const gfx::Size& size) { |
+ DCHECK(!root_); |
+ |
+ root_.reset(window_server_->CreateServerWindow( |
+ display_manager()->GetAndAdvanceNextRootId(), |
+ ServerWindow::Properties())); |
+ root_->SetBounds(gfx::Rect(size)); |
+ root_->SetVisible(true); |
+ focus_controller_.reset(new FocusController(this, root_.get())); |
+ focus_controller_->AddObserver(this); |
+ InitWindowManagerDisplayRootsIfNecessary(); |
+} |
+ |
ServerWindow* Display::GetRootWindow() { |
return root_.get(); |
} |
@@ -311,23 +324,15 @@ void Display::OnNativeCaptureLost() { |
void Display::OnViewportMetricsChanged(const ViewportMetrics& old_metrics, |
const ViewportMetrics& new_metrics) { |
+ if (!root_) |
+ return; |
+ |
gfx::Rect new_bounds(new_metrics.bounds.size()); |
- if (!root_) { |
- root_.reset(window_server_->CreateServerWindow( |
- display_manager()->GetAndAdvanceNextRootId(), |
- ServerWindow::Properties())); |
- root_->SetBounds(new_bounds); |
- root_->SetVisible(true); |
- focus_controller_.reset(new FocusController(this, root_.get())); |
- focus_controller_->AddObserver(this); |
- InitWindowManagerDisplayRootsIfNecessary(); |
- } else { |
- root_->SetBounds(new_bounds); |
- for (auto& pair : window_manager_display_root_map_) |
- pair.second->root()->SetBounds(new_bounds); |
- } |
- if (init_called_) |
- display_manager()->OnDisplayUpdate(this); |
+ root_->SetBounds(new_bounds); |
+ for (auto& pair : window_manager_display_root_map_) |
+ pair.second->root()->SetBounds(new_bounds); |
+ |
+ display_manager()->OnDisplayUpdate(this); |
} |
void Display::OnCompositorFrameDrawn() { |