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

Side by Side Diff: android_webview/browser/browser_view_renderer.cc

Issue 2147873003: cc: Dedup IPCs to return resources to client (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 4 years, 5 months 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 | « no previous file | android_webview/browser/render_thread_manager.h » ('j') | 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 "android_webview/browser/browser_view_renderer.h" 5 #include "android_webview/browser/browser_view_renderer.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "android_webview/browser/browser_view_renderer_client.h" 9 #include "android_webview/browser/browser_view_renderer_client.h"
10 #include "android_webview/browser/child_frame.h" 10 #include "android_webview/browser/child_frame.h"
11 #include "android_webview/browser/compositor_frame_consumer.h" 11 #include "android_webview/browser/compositor_frame_consumer.h"
12 #include "base/auto_reset.h" 12 #include "base/auto_reset.h"
13 #include "base/command_line.h" 13 #include "base/command_line.h"
14 #include "base/logging.h" 14 #include "base/logging.h"
15 #include "base/memory/ptr_util.h" 15 #include "base/memory/ptr_util.h"
16 #include "base/strings/string_number_conversions.h" 16 #include "base/strings/string_number_conversions.h"
17 #include "base/strings/stringprintf.h" 17 #include "base/strings/stringprintf.h"
18 #include "base/supports_user_data.h" 18 #include "base/supports_user_data.h"
19 #include "base/trace_event/trace_event_argument.h" 19 #include "base/trace_event/trace_event_argument.h"
20 #include "cc/output/compositor_frame.h" 20 #include "cc/output/compositor_frame.h"
21 #include "cc/output/compositor_frame_ack.h"
22 #include "content/public/browser/render_process_host.h" 21 #include "content/public/browser/render_process_host.h"
23 #include "content/public/browser/render_view_host.h" 22 #include "content/public/browser/render_view_host.h"
24 #include "content/public/browser/web_contents.h" 23 #include "content/public/browser/web_contents.h"
25 #include "content/public/common/content_switches.h" 24 #include "content/public/common/content_switches.h"
26 #include "gpu/command_buffer/service/gpu_switches.h" 25 #include "gpu/command_buffer/service/gpu_switches.h"
27 #include "third_party/skia/include/core/SkBitmap.h" 26 #include "third_party/skia/include/core/SkBitmap.h"
28 #include "third_party/skia/include/core/SkCanvas.h" 27 #include "third_party/skia/include/core/SkCanvas.h"
29 #include "third_party/skia/include/core/SkPicture.h" 28 #include "third_party/skia/include/core/SkPicture.h"
30 #include "third_party/skia/include/core/SkPictureRecorder.h" 29 #include "third_party/skia/include/core/SkPictureRecorder.h"
31 #include "ui/gfx/geometry/point.h" 30 #include "ui/gfx/geometry/point.h"
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 ReturnUnusedResource(compositor_frame_consumer->PassUncommittedFrameOnUI()); 288 ReturnUnusedResource(compositor_frame_consumer->PassUncommittedFrameOnUI());
290 ReturnResourceFromParent(compositor_frame_consumer); 289 ReturnResourceFromParent(compositor_frame_consumer);
291 compositor_frame_consumer->SetCompositorFrameProducer(nullptr); 290 compositor_frame_consumer->SetCompositorFrameProducer(nullptr);
292 } 291 }
293 292
294 void BrowserViewRenderer::ReturnUnusedResource( 293 void BrowserViewRenderer::ReturnUnusedResource(
295 std::unique_ptr<ChildFrame> child_frame) { 294 std::unique_ptr<ChildFrame> child_frame) {
296 if (!child_frame.get() || !child_frame->frame.get()) 295 if (!child_frame.get() || !child_frame->frame.get())
297 return; 296 return;
298 297
299 cc::CompositorFrameAck frame_ack; 298 cc::ReturnedResourceArray resources;
300 cc::TransferableResource::ReturnResources( 299 cc::TransferableResource::ReturnResources(
301 child_frame->frame->delegated_frame_data->resource_list, 300 child_frame->frame->delegated_frame_data->resource_list, &resources);
302 &frame_ack.resources);
303 content::SynchronousCompositor* compositor = 301 content::SynchronousCompositor* compositor =
304 FindCompositor(child_frame->compositor_id); 302 FindCompositor(child_frame->compositor_id);
305 if (compositor && !frame_ack.resources.empty()) 303 if (compositor && !resources.empty())
306 compositor->ReturnResources(child_frame->output_surface_id, frame_ack); 304 compositor->ReturnResources(child_frame->output_surface_id, resources);
307 } 305 }
308 306
309 void BrowserViewRenderer::ReturnResourceFromParent( 307 void BrowserViewRenderer::ReturnResourceFromParent(
310 CompositorFrameConsumer* compositor_frame_consumer) { 308 CompositorFrameConsumer* compositor_frame_consumer) {
311 CompositorFrameConsumer::ReturnedResourcesMap returned_resource_map; 309 CompositorFrameConsumer::ReturnedResourcesMap returned_resource_map;
312 compositor_frame_consumer->SwapReturnedResourcesOnUI(&returned_resource_map); 310 compositor_frame_consumer->SwapReturnedResourcesOnUI(&returned_resource_map);
313 for (auto& pair : returned_resource_map) { 311 for (auto& pair : returned_resource_map) {
314 CompositorID compositor_id = pair.first; 312 CompositorID compositor_id = pair.first;
315 content::SynchronousCompositor* compositor = FindCompositor(compositor_id); 313 content::SynchronousCompositor* compositor = FindCompositor(compositor_id);
316 cc::CompositorFrameAck frame_ack; 314 cc::ReturnedResourceArray resources;
317 frame_ack.resources.swap(pair.second.resources); 315 resources.swap(pair.second.resources);
318 316
319 if (compositor && !frame_ack.resources.empty()) { 317 if (compositor && !resources.empty()) {
320 compositor->ReturnResources(pair.second.output_surface_id, frame_ack); 318 compositor->ReturnResources(pair.second.output_surface_id, resources);
321 } 319 }
322 } 320 }
323 } 321 }
324 322
325 bool BrowserViewRenderer::OnDrawSoftware(SkCanvas* canvas) { 323 bool BrowserViewRenderer::OnDrawSoftware(SkCanvas* canvas) {
326 return CanOnDraw() && CompositeSW(canvas); 324 return CanOnDraw() && CompositeSW(canvas);
327 } 325 }
328 326
329 sk_sp<SkPicture> BrowserViewRenderer::CapturePicture(int width, 327 sk_sp<SkPicture> BrowserViewRenderer::CapturePicture(int width,
330 int height) { 328 int height) {
(...skipping 411 matching lines...) Expand 10 before | Expand all | Expand 10 after
742 base::StringAppendF(&str, 740 base::StringAppendF(&str,
743 "overscroll_rounding_error_: %s ", 741 "overscroll_rounding_error_: %s ",
744 overscroll_rounding_error_.ToString().c_str()); 742 overscroll_rounding_error_.ToString().c_str());
745 base::StringAppendF( 743 base::StringAppendF(
746 &str, "on_new_picture_enable: %d ", on_new_picture_enable_); 744 &str, "on_new_picture_enable: %d ", on_new_picture_enable_);
747 base::StringAppendF(&str, "clear_view: %d ", clear_view_); 745 base::StringAppendF(&str, "clear_view: %d ", clear_view_);
748 return str; 746 return str;
749 } 747 }
750 748
751 } // namespace android_webview 749 } // namespace android_webview
OLDNEW
« no previous file with comments | « no previous file | android_webview/browser/render_thread_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698