| Index: services/ui/ws/frame_generator.cc
|
| diff --git a/services/ui/ws/frame_generator.cc b/services/ui/ws/frame_generator.cc
|
| index 9dc197df89aec5933832765c4f1857f7d746f921..505ad37dbead465d23c0811143bf8ec4efdf67b0 100644
|
| --- a/services/ui/ws/frame_generator.cc
|
| +++ b/services/ui/ws/frame_generator.cc
|
| @@ -23,27 +23,10 @@ namespace ui {
|
| namespace ws {
|
|
|
| FrameGenerator::FrameGenerator(FrameGeneratorDelegate* delegate,
|
| - ServerWindow* root_window)
|
| - : delegate_(delegate),
|
| - root_window_(root_window),
|
| - binding_(this) {
|
| + ServerWindow* root_window,
|
| + gfx::AcceleratedWidget widget)
|
| + : delegate_(delegate), root_window_(root_window), binding_(this) {
|
| DCHECK(delegate_);
|
| -}
|
| -
|
| -void FrameGenerator::SetDeviceScaleFactor(float device_scale_factor) {
|
| - if (device_scale_factor_ == device_scale_factor)
|
| - return;
|
| - device_scale_factor_ = device_scale_factor;
|
| - if (compositor_frame_sink_)
|
| - compositor_frame_sink_->SetNeedsBeginFrame(true);
|
| -}
|
| -
|
| -FrameGenerator::~FrameGenerator() {
|
| - compositor_frame_sink_.reset();
|
| -}
|
| -
|
| -void FrameGenerator::OnAcceleratedWidgetAvailable(
|
| - gfx::AcceleratedWidget widget) {
|
| DCHECK_NE(gfx::kNullAcceleratedWidget, widget);
|
| cc::mojom::MojoCompositorFrameSinkAssociatedRequest sink_request =
|
| mojo::MakeRequest(&compositor_frame_sink_);
|
| @@ -54,6 +37,15 @@ void FrameGenerator::OnAcceleratedWidgetAvailable(
|
| std::move(display_request));
|
| }
|
|
|
| +FrameGenerator::~FrameGenerator() = default;
|
| +
|
| +void FrameGenerator::SetDeviceScaleFactor(float device_scale_factor) {
|
| + if (device_scale_factor_ == device_scale_factor)
|
| + return;
|
| + device_scale_factor_ = device_scale_factor;
|
| + compositor_frame_sink_->SetNeedsBeginFrame(true);
|
| +}
|
| +
|
| void FrameGenerator::OnSurfaceCreated(const cc::SurfaceInfo& surface_info) {
|
| DCHECK(surface_info.id().is_valid());
|
|
|
| @@ -79,24 +71,21 @@ void FrameGenerator::OnBeginFrame(const cc::BeginFrameArgs& begin_frame_arags) {
|
| // TODO(fsamuel): We should add a trace for generating a top level frame.
|
| cc::CompositorFrame frame(GenerateCompositorFrame(root_window_->bounds()));
|
|
|
| - if (compositor_frame_sink_) {
|
| - gfx::Size frame_size = last_submitted_frame_size_;
|
| - if (!frame.render_pass_list.empty())
|
| - frame_size = frame.render_pass_list[0]->output_rect.size();
|
| -
|
| - if (!local_surface_id_.is_valid() ||
|
| - frame_size != last_submitted_frame_size_) {
|
| - local_surface_id_ = id_allocator_.GenerateId();
|
| - display_private_->ResizeDisplay(frame_size);
|
| - }
|
| -
|
| - display_private_->SetLocalSurfaceId(local_surface_id_,
|
| - device_scale_factor_);
|
| - compositor_frame_sink_->SubmitCompositorFrame(local_surface_id_,
|
| - std::move(frame));
|
| - compositor_frame_sink_->SetNeedsBeginFrame(false);
|
| - last_submitted_frame_size_ = frame_size;
|
| + gfx::Size frame_size = last_submitted_frame_size_;
|
| + if (!frame.render_pass_list.empty())
|
| + frame_size = frame.render_pass_list.back()->output_rect.size();
|
| +
|
| + if (!local_surface_id_.is_valid() ||
|
| + frame_size != last_submitted_frame_size_) {
|
| + local_surface_id_ = id_allocator_.GenerateId();
|
| + display_private_->ResizeDisplay(frame_size);
|
| }
|
| +
|
| + display_private_->SetLocalSurfaceId(local_surface_id_, device_scale_factor_);
|
| + compositor_frame_sink_->SubmitCompositorFrame(local_surface_id_,
|
| + std::move(frame));
|
| + compositor_frame_sink_->SetNeedsBeginFrame(false);
|
| + last_submitted_frame_size_ = frame_size;
|
| }
|
|
|
| void FrameGenerator::ReclaimResources(
|
|
|