| Index: services/ui/public/cpp/window_compositor_frame_sink.cc
|
| diff --git a/services/ui/public/cpp/window_compositor_frame_sink.cc b/services/ui/public/cpp/window_compositor_frame_sink.cc
|
| index 4b3f6759d5cc2f53ff9997e49280600d96613442..0d7bc651d4fdd9ff5c73ed566d15ae9c5e6da4f4 100644
|
| --- a/services/ui/public/cpp/window_compositor_frame_sink.cc
|
| +++ b/services/ui/public/cpp/window_compositor_frame_sink.cc
|
| @@ -35,6 +35,25 @@ std::unique_ptr<WindowCompositorFrameSink> WindowCompositorFrameSink::Create(
|
|
|
| WindowCompositorFrameSink::~WindowCompositorFrameSink() {}
|
|
|
| +base::WeakPtr<WindowCompositorFrameSink>
|
| +WindowCompositorFrameSink::GetWeakPtr() {
|
| + return factory_.GetWeakPtr();
|
| +}
|
| +
|
| +void WindowCompositorFrameSink::SetLocalFrameId(
|
| + const cc::LocalFrameId& local_frame_id) {
|
| + // if (local_frame_id == local_frame_id_)
|
| + // return;
|
| + fprintf(stderr, ">>>WindowCompositorFrameSink::SetLocalFrameId(%s)\n",
|
| + local_frame_id.ToString().c_str());
|
| + DCHECK(local_frame_id.is_valid());
|
| + local_frame_id_ = local_frame_id;
|
| + if (pending_compositor_frame_) {
|
| + SubmitCompositorFrame(std::move(pending_compositor_frame_.value()));
|
| + pending_compositor_frame_.reset();
|
| + }
|
| +}
|
| +
|
| bool WindowCompositorFrameSink::BindToClient(
|
| cc::CompositorFrameSinkClient* client) {
|
| if (!cc::CompositorFrameSink::BindToClient(client))
|
| @@ -71,13 +90,19 @@ void WindowCompositorFrameSink::SubmitCompositorFrame(
|
| 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_frame_id_.is_valid() || frame_size != last_submitted_frame_size_)
|
| - local_frame_id_ = id_allocator_.GenerateId();
|
| -
|
| - compositor_frame_sink_->SubmitCompositorFrame(local_frame_id_,
|
| - std::move(frame));
|
|
|
| - last_submitted_frame_size_ = frame_size;
|
| + // LocalFrameId is invalid if this Window has not been embedded anywhere yet.
|
| + if (local_frame_id_.is_valid()) {
|
| + // frame.metadata.respect_deadline = false;
|
| + fprintf(stderr, ">>>Submitting Frame %s\n",
|
| + cc::SurfaceId(frame_sink_id_, local_frame_id_).ToString().c_str());
|
| + compositor_frame_sink_->SubmitCompositorFrame(local_frame_id_,
|
| + std::move(frame));
|
| +
|
| + last_submitted_frame_size_ = frame_size;
|
| + } else {
|
| + pending_compositor_frame_ = std::move(frame);
|
| + }
|
| }
|
|
|
| WindowCompositorFrameSink::WindowCompositorFrameSink(
|
| @@ -92,7 +117,8 @@ WindowCompositorFrameSink::WindowCompositorFrameSink(
|
| nullptr),
|
| compositor_frame_sink_info_(std::move(compositor_frame_sink_info)),
|
| client_request_(std::move(client_request)),
|
| - frame_sink_id_(frame_sink_id) {}
|
| + frame_sink_id_(frame_sink_id),
|
| + factory_(this) {}
|
|
|
| void WindowCompositorFrameSink::DidReceiveCompositorFrameAck() {
|
| DCHECK(thread_checker_);
|
|
|