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

Unified Diff: android_webview/browser/browser_view_renderer.cc

Issue 659743002: aw: Fallback delegated composite (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: const Created 6 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « android_webview/browser/browser_view_renderer.h ('k') | android_webview/browser/hardware_renderer.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 a79f97d89301400d9a0a6f46f342cb06f4b8d157..33fad4f66416fd69484580d57e6aa7c97a4af619 100644
--- a/android_webview/browser/browser_view_renderer.cc
+++ b/android_webview/browser/browser_view_renderer.cc
@@ -226,10 +226,6 @@ bool BrowserViewRenderer::OnDrawHardware(jobject java_canvas) {
return false;
ReturnResourceFromParent();
- SynchronousCompositorMemoryPolicy new_policy = CalculateDesiredMemoryPolicy();
- RequestMemoryPolicy(new_policy);
- compositor_->SetMemoryPolicy(memory_policy_);
-
if (shared_renderer_state_->HasCompositorFrame()) {
TRACE_EVENT_INSTANT0("android_webview",
"EarlyOut_PreviousFrameUnconsumed",
@@ -238,6 +234,20 @@ bool BrowserViewRenderer::OnDrawHardware(jobject java_canvas) {
return client_->RequestDrawGL(java_canvas, false);
}
+ scoped_ptr<cc::CompositorFrame> frame = CompositeHw();
+ if (!frame.get())
+ return false;
+
+ shared_renderer_state_->SetCompositorFrame(frame.Pass(), false);
+ GlobalTileManager::GetInstance()->DidUse(tile_manager_key_);
+ return client_->RequestDrawGL(java_canvas, false);
+}
+
+scoped_ptr<cc::CompositorFrame> BrowserViewRenderer::CompositeHw() {
+ SynchronousCompositorMemoryPolicy new_policy = CalculateDesiredMemoryPolicy();
+ RequestMemoryPolicy(new_policy);
+ compositor_->SetMemoryPolicy(memory_policy_);
+
parent_draw_constraints_ = shared_renderer_state_->ParentDrawConstraints();
gfx::Size surface_size(width_, height_);
gfx::Rect viewport(surface_size);
@@ -261,14 +271,9 @@ bool BrowserViewRenderer::OnDrawHardware(jobject java_canvas) {
clip,
viewport_rect_for_tile_priority,
transform_for_tile_priority);
- if (!frame.get())
- return false;
-
- GlobalTileManager::GetInstance()->DidUse(tile_manager_key_);
-
- shared_renderer_state_->SetCompositorFrame(frame.Pass());
- DidComposite();
- return client_->RequestDrawGL(java_canvas, false);
+ if (frame.get())
+ DidComposite();
+ return frame.Pass();
}
void BrowserViewRenderer::UpdateParentDrawConstraints() {
@@ -710,7 +715,16 @@ void BrowserViewRenderer::FallbackTickFired() {
DCHECK(block_invalidates_);
fallback_tick_pending_ = false;
if (compositor_needs_continuous_invalidate_ && compositor_) {
- ForceFakeCompositeSW();
+ if (hardware_enabled_) {
+ ReturnResourceFromParent();
+ ReturnUnusedResource(shared_renderer_state_->PassCompositorFrame());
+ scoped_ptr<cc::CompositorFrame> frame = CompositeHw();
+ if (frame.get()) {
+ shared_renderer_state_->SetCompositorFrame(frame.Pass(), true);
+ }
+ } else {
+ ForceFakeCompositeSW();
+ }
} else {
// Pretend we just composited to unblock further invalidates.
DidComposite();
« no previous file with comments | « android_webview/browser/browser_view_renderer.h ('k') | android_webview/browser/hardware_renderer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698