Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(74)

Side by Side Diff: ui/aura/mus/window_compositor_frame_sink.cc

Issue 2527443002: Display Compositor: Allocate LocalFrameId in client. (Closed)
Patch Set: Addressed rjkroege@'s comment Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ui/aura/mus/window_compositor_frame_sink.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/aura/mus/window_compositor_frame_sink.h" 5 #include "ui/aura/mus/window_compositor_frame_sink.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "cc/output/compositor_frame_sink_client.h" 8 #include "cc/output/compositor_frame_sink_client.h"
9 #include "gpu/ipc/client/gpu_channel_host.h" 9 #include "gpu/ipc/client/gpu_channel_host.h"
10 10
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 compositor_frame_sink_.reset(); 57 compositor_frame_sink_.reset();
58 cc::CompositorFrameSink::DetachFromClient(); 58 cc::CompositorFrameSink::DetachFromClient();
59 } 59 }
60 60
61 void WindowCompositorFrameSink::SubmitCompositorFrame( 61 void WindowCompositorFrameSink::SubmitCompositorFrame(
62 cc::CompositorFrame frame) { 62 cc::CompositorFrame frame) {
63 DCHECK(thread_checker_); 63 DCHECK(thread_checker_);
64 DCHECK(thread_checker_->CalledOnValidThread()); 64 DCHECK(thread_checker_->CalledOnValidThread());
65 if (!compositor_frame_sink_) 65 if (!compositor_frame_sink_)
66 return; 66 return;
67 compositor_frame_sink_->SubmitCompositorFrame(std::move(frame)); 67
68 gfx::Size frame_size;
69 if (!frame.render_pass_list.empty())
sadrul 2016/11/22 19:22:25 Is it valid for a frame to have no render-pass? (a
Fady Samuel 2016/11/22 19:24:38 The pattern of submitting an empty CompositorFrame
sadrul 2016/11/22 19:25:48 I see. Should that reset the frame/frame-sink size
70 frame_size = frame.render_pass_list[0]->output_rect.size();
71 if (!local_frame_id_.is_valid() || frame_size != last_submitted_frame_size_)
72 local_frame_id_ = id_allocator_.GenerateId();
73
74 compositor_frame_sink_->SubmitCompositorFrame(local_frame_id_,
75 std::move(frame));
76
77 last_submitted_frame_size_ = frame_size;
68 } 78 }
69 79
70 WindowCompositorFrameSink::WindowCompositorFrameSink( 80 WindowCompositorFrameSink::WindowCompositorFrameSink(
71 scoped_refptr<cc::ContextProvider> context_provider, 81 scoped_refptr<cc::ContextProvider> context_provider,
72 gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager, 82 gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager,
73 mojo::InterfacePtrInfo<cc::mojom::MojoCompositorFrameSink> 83 cc::mojom::MojoCompositorFrameSinkPtrInfo compositor_frame_sink_info,
74 compositor_frame_sink_info,
75 cc::mojom::MojoCompositorFrameSinkClientRequest client_request) 84 cc::mojom::MojoCompositorFrameSinkClientRequest client_request)
76 : cc::CompositorFrameSink(std::move(context_provider), 85 : cc::CompositorFrameSink(std::move(context_provider),
77 nullptr, 86 nullptr,
78 gpu_memory_buffer_manager, 87 gpu_memory_buffer_manager,
79 nullptr), 88 nullptr),
80 compositor_frame_sink_info_(std::move(compositor_frame_sink_info)), 89 compositor_frame_sink_info_(std::move(compositor_frame_sink_info)),
81 client_request_(std::move(client_request)) {} 90 client_request_(std::move(client_request)) {}
82 91
83 void WindowCompositorFrameSink::DidReceiveCompositorFrameAck() { 92 void WindowCompositorFrameSink::DidReceiveCompositorFrameAck() {
84 DCHECK(thread_checker_); 93 DCHECK(thread_checker_);
(...skipping 24 matching lines...) Expand all
109 WindowCompositorFrameSinkBinding::~WindowCompositorFrameSinkBinding() {} 118 WindowCompositorFrameSinkBinding::~WindowCompositorFrameSinkBinding() {}
110 119
111 WindowCompositorFrameSinkBinding::WindowCompositorFrameSinkBinding( 120 WindowCompositorFrameSinkBinding::WindowCompositorFrameSinkBinding(
112 cc::mojom::MojoCompositorFrameSinkRequest compositor_frame_sink_request, 121 cc::mojom::MojoCompositorFrameSinkRequest compositor_frame_sink_request,
113 mojo::InterfacePtrInfo<cc::mojom::MojoCompositorFrameSinkClient> 122 mojo::InterfacePtrInfo<cc::mojom::MojoCompositorFrameSinkClient>
114 compositor_frame_sink_client) 123 compositor_frame_sink_client)
115 : compositor_frame_sink_request_(std::move(compositor_frame_sink_request)), 124 : compositor_frame_sink_request_(std::move(compositor_frame_sink_request)),
116 compositor_frame_sink_client_(std::move(compositor_frame_sink_client)) {} 125 compositor_frame_sink_client_(std::move(compositor_frame_sink_client)) {}
117 126
118 } // namespace aura 127 } // namespace aura
OLDNEW
« no previous file with comments | « ui/aura/mus/window_compositor_frame_sink.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698