| Index: android_webview/browser/browser_view_renderer.cc
|
| diff --git a/android_webview/browser/browser_view_renderer.cc b/android_webview/browser/browser_view_renderer.cc
|
| index a4cea2bc4b92e92d4bc908522e34f953e8f38288..807331d720042c50763bf7db53cbbc97d52e1d9e 100644
|
| --- a/android_webview/browser/browser_view_renderer.cc
|
| +++ b/android_webview/browser/browser_view_renderer.cc
|
| @@ -259,23 +259,24 @@ bool BrowserViewRenderer::CompositeHw() {
|
| viewport_rect_for_tile_priority = last_on_draw_global_visible_rect_;
|
| }
|
|
|
| - scoped_ptr<cc::CompositorFrame> frame =
|
| + content::SynchronousCompositor::Frame frame =
|
| compositor_->DemandDrawHw(surface_size,
|
| gfx::Transform(),
|
| viewport,
|
| clip,
|
| viewport_rect_for_tile_priority,
|
| transform_for_tile_priority);
|
| - if (!frame.get()) {
|
| + if (!frame.frame.get()) {
|
| TRACE_EVENT_INSTANT0("android_webview", "NoNewFrame",
|
| TRACE_EVENT_SCOPE_THREAD);
|
| return shared_renderer_state_.HasFrameOnUI();
|
| }
|
|
|
| scoped_ptr<ChildFrame> child_frame = make_scoped_ptr(new ChildFrame(
|
| - std::move(frame), GetCompositorID(compositor_),
|
| - viewport_rect_for_tile_priority.IsEmpty(), transform_for_tile_priority,
|
| - offscreen_pre_raster_, parent_draw_constraints.is_layer));
|
| + frame.output_surface_id, std::move(frame.frame),
|
| + GetCompositorID(compositor_), viewport_rect_for_tile_priority.IsEmpty(),
|
| + transform_for_tile_priority, offscreen_pre_raster_,
|
| + parent_draw_constraints.is_layer));
|
|
|
| // Uncommitted frame can happen with consecutive fallback ticks.
|
| ReturnUnusedResource(shared_renderer_state_.PassUncommittedFrameOnUI());
|
| @@ -302,21 +303,23 @@ void BrowserViewRenderer::ReturnUnusedResource(
|
| content::SynchronousCompositor* compositor =
|
| compositor_map_[child_frame->compositor_id];
|
| if (compositor && !frame_ack.resources.empty())
|
| - compositor->ReturnResources(frame_ack);
|
| + compositor->ReturnResources(child_frame->output_surface_id, frame_ack);
|
| }
|
|
|
| void BrowserViewRenderer::ReturnResourceFromParent() {
|
| - std::map<unsigned int, cc::ReturnedResourceArray> returned_resource_map;
|
| + SharedRendererState::ReturnedResourcesMap returned_resource_map;
|
| shared_renderer_state_.SwapReturnedResourcesOnUI(&returned_resource_map);
|
| for (auto iterator = returned_resource_map.begin();
|
| iterator != returned_resource_map.end(); iterator++) {
|
| unsigned int compositor_id = iterator->first;
|
| content::SynchronousCompositor* compositor = compositor_map_[compositor_id];
|
| cc::CompositorFrameAck frame_ack;
|
| - frame_ack.resources.swap(iterator->second);
|
| + frame_ack.resources.swap(iterator->second.resources);
|
|
|
| - if (compositor && !frame_ack.resources.empty())
|
| - compositor->ReturnResources(frame_ack);
|
| + if (compositor && !frame_ack.resources.empty()) {
|
| + compositor->ReturnResources(iterator->second.output_surface_id,
|
| + frame_ack);
|
| + }
|
| }
|
| }
|
|
|
|
|