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

Side by Side Diff: content/browser/android/synchronous_compositor_host.cc

Issue 2456523004: sync compositor: Implement post metadata to UI (Closed)
Patch Set: check registered Created 4 years, 1 month 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "content/browser/android/synchronous_compositor_host.h" 5 #include "content/browser/android/synchronous_compositor_host.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/containers/hash_tables.h" 10 #include "base/containers/hash_tables.h"
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 bytes_limit_(0u), 75 bytes_limit_(0u),
76 renderer_param_version_(0u), 76 renderer_param_version_(0u),
77 need_animate_scroll_(false), 77 need_animate_scroll_(false),
78 need_invalidate_count_(0u), 78 need_invalidate_count_(0u),
79 did_activate_pending_tree_count_(0u) { 79 did_activate_pending_tree_count_(0u) {
80 client_->DidInitializeCompositor(this, process_id_, routing_id_); 80 client_->DidInitializeCompositor(this, process_id_, routing_id_);
81 } 81 }
82 82
83 SynchronousCompositorHost::~SynchronousCompositorHost() { 83 SynchronousCompositorHost::~SynchronousCompositorHost() {
84 client_->DidDestroyCompositor(this, process_id_, routing_id_); 84 client_->DidDestroyCompositor(this, process_id_, routing_id_);
85 if (registered_with_filter_) {
86 if (SynchronousCompositorBrowserFilter* filter = GetFilter())
87 filter->UnregisterHost(this);
88 }
85 } 89 }
86 90
87 bool SynchronousCompositorHost::OnMessageReceived(const IPC::Message& message) { 91 bool SynchronousCompositorHost::OnMessageReceived(const IPC::Message& message) {
88 bool handled = true; 92 bool handled = true;
89 IPC_BEGIN_MESSAGE_MAP(SynchronousCompositorHost, message) 93 IPC_BEGIN_MESSAGE_MAP(SynchronousCompositorHost, message)
90 IPC_MESSAGE_HANDLER(SyncCompositorHostMsg_CompositorFrameSinkCreated, 94 IPC_MESSAGE_HANDLER(SyncCompositorHostMsg_CompositorFrameSinkCreated,
91 CompositorFrameSinkCreated) 95 CompositorFrameSinkCreated)
92 IPC_MESSAGE_HANDLER(SyncCompositorHostMsg_UpdateState, ProcessCommonParams) 96 IPC_MESSAGE_HANDLER(SyncCompositorHostMsg_UpdateState, ProcessCommonParams)
93 IPC_MESSAGE_UNHANDLED(handled = false) 97 IPC_MESSAGE_UNHANDLED(handled = false)
94 IPC_END_MESSAGE_MAP() 98 IPC_END_MESSAGE_MAP()
95 return handled; 99 return handled;
96 } 100 }
97 101
98 scoped_refptr<SynchronousCompositor::FrameFuture> 102 scoped_refptr<SynchronousCompositor::FrameFuture>
99 SynchronousCompositorHost::DemandDrawHwAsync( 103 SynchronousCompositorHost::DemandDrawHwAsync(
100 const gfx::Size& viewport_size, 104 const gfx::Size& viewport_size,
101 const gfx::Rect& viewport_rect_for_tile_priority, 105 const gfx::Rect& viewport_rect_for_tile_priority,
102 const gfx::Transform& transform_for_tile_priority) { 106 const gfx::Transform& transform_for_tile_priority) {
103 SyncCompositorDemandDrawHwParams params(viewport_size, 107 SyncCompositorDemandDrawHwParams params(viewport_size,
104 viewport_rect_for_tile_priority, 108 viewport_rect_for_tile_priority,
105 transform_for_tile_priority); 109 transform_for_tile_priority);
106 scoped_refptr<FrameFuture> frame_future = new FrameFuture(); 110 scoped_refptr<FrameFuture> frame_future = new FrameFuture();
107 if (SynchronousCompositorBrowserFilter* filter = GetFilter()) { 111 if (SynchronousCompositorBrowserFilter* filter = GetFilter()) {
112 if (!registered_with_filter_) {
113 filter->RegisterHost(this);
114 registered_with_filter_ = true;
115 }
108 filter->SetFrameFuture(routing_id_, frame_future); 116 filter->SetFrameFuture(routing_id_, frame_future);
109 sender_->Send(new SyncCompositorMsg_DemandDrawHwAsync(routing_id_, params)); 117 sender_->Send(new SyncCompositorMsg_DemandDrawHwAsync(routing_id_, params));
110 } else { 118 } else {
111 frame_future->SetFrame(nullptr); 119 frame_future->SetFrame(nullptr);
112 } 120 }
113 return frame_future; 121 return frame_future;
114 } 122 }
115 123
116 SynchronousCompositor::Frame SynchronousCompositorHost::DemandDrawHw( 124 SynchronousCompositor::Frame SynchronousCompositorHost::DemandDrawHw(
117 const gfx::Size& viewport_size, 125 const gfx::Size& viewport_size,
118 const gfx::Rect& viewport_rect_for_tile_priority, 126 const gfx::Rect& viewport_rect_for_tile_priority,
119 const gfx::Transform& transform_for_tile_priority) { 127 const gfx::Transform& transform_for_tile_priority) {
120 SyncCompositorDemandDrawHwParams params(viewport_size, 128 SyncCompositorDemandDrawHwParams params(viewport_size,
121 viewport_rect_for_tile_priority, 129 viewport_rect_for_tile_priority,
122 transform_for_tile_priority); 130 transform_for_tile_priority);
123 uint32_t compositor_frame_sink_id; 131 uint32_t compositor_frame_sink_id;
124 cc::CompositorFrame compositor_frame; 132 cc::CompositorFrame compositor_frame;
125 SyncCompositorCommonRendererParams common_renderer_params; 133 SyncCompositorCommonRendererParams common_renderer_params;
126 134
127 if (!sender_->Send(new SyncCompositorMsg_DemandDrawHw( 135 if (!sender_->Send(new SyncCompositorMsg_DemandDrawHw(
128 routing_id_, params, &common_renderer_params, 136 routing_id_, params, &common_renderer_params,
129 &compositor_frame_sink_id, &compositor_frame))) { 137 &compositor_frame_sink_id, &compositor_frame))) {
130 return SynchronousCompositor::Frame(); 138 return SynchronousCompositor::Frame();
131 } 139 }
132 140
133 ProcessCommonParams(common_renderer_params); 141 ProcessCommonParams(common_renderer_params);
134 142
135 return ProcessHardwareFrame(compositor_frame_sink_id,
136 std::move(compositor_frame));
137 }
138
139 SynchronousCompositor::Frame SynchronousCompositorHost::ProcessHardwareFrame(
140 uint32_t compositor_frame_sink_id,
141 cc::CompositorFrame compositor_frame) {
142 SynchronousCompositor::Frame frame; 143 SynchronousCompositor::Frame frame;
143 frame.frame.reset(new cc::CompositorFrame); 144 frame.frame.reset(new cc::CompositorFrame);
144 frame.compositor_frame_sink_id = compositor_frame_sink_id; 145 frame.compositor_frame_sink_id = compositor_frame_sink_id;
145 *frame.frame = std::move(compositor_frame); 146 *frame.frame = std::move(compositor_frame);
146 if (!frame.frame->delegated_frame_data) { 147 if (!frame.frame->delegated_frame_data) {
147 // This can happen if compositor did not swap in this draw. 148 // This can happen if compositor did not swap in this draw.
148 frame.frame.reset(); 149 frame.frame.reset();
149 } 150 }
150 if (frame.frame) { 151 if (frame.frame) {
151 UpdateFrameMetaData(frame.frame->metadata.Clone()); 152 UpdateFrameMetaData(frame.frame->metadata.Clone());
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 if (params.page_scale_factor) { 416 if (params.page_scale_factor) {
416 client_->UpdateRootLayerState( 417 client_->UpdateRootLayerState(
417 this, gfx::ScrollOffsetToVector2dF(params.total_scroll_offset), 418 this, gfx::ScrollOffsetToVector2dF(params.total_scroll_offset),
418 gfx::ScrollOffsetToVector2dF(params.max_scroll_offset), 419 gfx::ScrollOffsetToVector2dF(params.max_scroll_offset),
419 params.scrollable_size, params.page_scale_factor, 420 params.scrollable_size, params.page_scale_factor,
420 params.min_page_scale_factor, params.max_page_scale_factor); 421 params.min_page_scale_factor, params.max_page_scale_factor);
421 } 422 }
422 } 423 }
423 424
424 } // namespace content 425 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698