Chromium Code Reviews| Index: services/ui/ws/platform_display_default.cc |
| diff --git a/services/ui/ws/platform_display_default.cc b/services/ui/ws/platform_display_default.cc |
| index a126d699c0df820a8eb3ad71a2dd2ebf75ed8794..c69e5d387acd4949be253c59a13b0aed0809f693 100644 |
| --- a/services/ui/ws/platform_display_default.cc |
| +++ b/services/ui/ws/platform_display_default.cc |
| @@ -37,11 +37,12 @@ PlatformDisplayDefault::PlatformDisplayDefault( |
| image_cursors_(new ImageCursors), |
| #endif |
| metrics_(metrics), |
| - widget_(gfx::kNullAcceleratedWidget), |
| - init_device_scale_factor_(metrics.device_scale_factor) { |
| + widget_(gfx::kNullAcceleratedWidget) { |
| + root_window_->AddObserver(this); |
| } |
| PlatformDisplayDefault::~PlatformDisplayDefault() { |
| + root_window_->RemoveObserver(this); |
| // Don't notify the delegate from the destructor. |
| delegate_ = nullptr; |
| @@ -257,8 +258,10 @@ void PlatformDisplayDefault::OnAcceleratedWidgetAvailable( |
| std::move(display_private), |
| std::move(compositor_frame_sink_client_request)); |
| frame_generator_ = base::MakeUnique<FrameGenerator>( |
| - root_window_, std::move(display_client_compositor_frame_sink)); |
| - frame_generator_->SetDeviceScaleFactor(init_device_scale_factor_); |
| + std::move(display_client_compositor_frame_sink)); |
| + frame_generator_->OnWindowVisibilityChanged(root_window_->visible()); |
| + frame_generator_->OnWindowBoundsChanged(root_window_->bounds()); |
| + frame_generator_->SetDeviceScaleFactor(metrics_.device_scale_factor); |
| } |
| void PlatformDisplayDefault::OnAcceleratedWidgetDestroyed() { |
| @@ -267,5 +270,18 @@ void PlatformDisplayDefault::OnAcceleratedWidgetDestroyed() { |
| void PlatformDisplayDefault::OnActivationChanged(bool active) {} |
| +void PlatformDisplayDefault::OnWindowBoundsChanged( |
|
msw
2017/03/22 19:36:52
Why not make FrameGenerator observe the ServerWind
Alex Z.
2017/03/22 20:51:10
We wanted to make FrameGenerator as simple as poss
|
| + ServerWindow* window, |
| + const gfx::Rect& old_bounds, |
| + const gfx::Rect& new_bounds) { |
| + if (frame_generator_) |
| + frame_generator_->OnWindowBoundsChanged(new_bounds); |
| +} |
| + |
| +void PlatformDisplayDefault::OnWindowVisibilityChanged(ServerWindow* window) { |
| + if (frame_generator_) |
| + frame_generator_->OnWindowVisibilityChanged(window->visible()); |
| +} |
| + |
| } // namespace ws |
| } // namespace ui |