| Index: services/ui/ws/frame_generator.cc
|
| diff --git a/services/ui/ws/frame_generator.cc b/services/ui/ws/frame_generator.cc
|
| index 114af93278c4e08ac9226f8cb2db900e378ae173..1e58213b2c42c6da98cd357a122c2e5b7845fafb 100644
|
| --- a/services/ui/ws/frame_generator.cc
|
| +++ b/services/ui/ws/frame_generator.cc
|
| @@ -46,23 +46,19 @@ void FrameGenerator::OnAcceleratedWidgetAvailable(
|
| root_window_->CreateDisplayCompositorFrameSink(
|
| widget, std::move(request), binding_.CreateInterfacePtrAndBind(),
|
| std::move(display_private_request));
|
| - // TODO(fsamuel): This means we're always requesting a new BeginFrame signal
|
| - // even when we don't need it. Once surface ID propagation work is done,
|
| - // this will not be necessary because FrameGenerator will only need a
|
| - // BeginFrame if the window manager changes.
|
| - compositor_frame_sink_->SetNeedsBeginFrame(true);
|
| }
|
|
|
| -void FrameGenerator::OnSurfaceCreated(const cc::SurfaceId& surface_id,
|
| - ServerWindow* window) {
|
| - DCHECK(surface_id.is_valid());
|
| +void FrameGenerator::OnSurfaceCreated(const cc::SurfaceInfo& surface_info) {
|
| + DCHECK(surface_info.id().is_valid());
|
|
|
| // Only handle embedded surfaces changing here. The display root surface
|
| // changing is handled immediately after the CompositorFrame is submitted.
|
| // TODO(samans): Only tell FrameGenerator about WM surface instead of all
|
| // all surfaces.
|
| - if (window == delegate_->GetActiveRootWindow())
|
| - window_manager_surface_id_ = surface_id;
|
| + if (surface_info != window_manager_surface_info_) {
|
| + compositor_frame_sink_->SetNeedsBeginFrame(true);
|
| + window_manager_surface_info_ = surface_info;
|
| + }
|
| }
|
|
|
| void FrameGenerator::DidReceiveCompositorFrameAck() {}
|
| @@ -84,6 +80,7 @@ void FrameGenerator::OnBeginFrame(const cc::BeginFrameArgs& begin_frame_arags) {
|
|
|
| compositor_frame_sink_->SubmitCompositorFrame(local_frame_id_,
|
| std::move(frame));
|
| + compositor_frame_sink_->SetNeedsBeginFrame(false);
|
| last_submitted_frame_size_ = frame_size;
|
| }
|
| }
|
| @@ -127,8 +124,10 @@ cc::CompositorFrame FrameGenerator::GenerateCompositorFrame(
|
| }
|
| frame.metadata.device_scale_factor = device_scale_factor_;
|
|
|
| - if (window_manager_surface_id_.is_valid())
|
| - frame.metadata.referenced_surfaces.push_back(window_manager_surface_id_);
|
| + if (window_manager_surface_info_.id().is_valid()) {
|
| + frame.metadata.referenced_surfaces.push_back(
|
| + window_manager_surface_info_.id());
|
| + }
|
|
|
| return frame;
|
| }
|
|
|