| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |