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

Unified Diff: android_webview/browser/browser_view_renderer.cc

Issue 331103002: aw: Remove legacy rendering path (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 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
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 3c1ceb42be1d1764d60340660eea313ab09ef9aa..4377b605b78ecb2ff5d9a1a42a8c791ff0748a0f 100644
--- a/android_webview/browser/browser_view_renderer.cc
+++ b/android_webview/browser/browser_view_renderer.cc
@@ -6,7 +6,6 @@
#include "android_webview/browser/browser_view_renderer_client.h"
#include "android_webview/browser/shared_renderer_state.h"
-#include "android_webview/common/aw_switches.h"
#include "android_webview/public/browser/draw_gl.h"
#include "base/android/jni_android.h"
#include "base/auto_reset.h"
@@ -17,7 +16,6 @@
#include "base/strings/string_number_conversions.h"
#include "base/strings/stringprintf.h"
#include "cc/output/compositor_frame.h"
-#include "content/public/browser/android/synchronous_compositor.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/web_contents.h"
#include "content/public/common/content_switches.h"
@@ -126,7 +124,7 @@ BrowserViewRenderer::BrowserViewRenderer(
weak_factory_on_ui_thread_(this),
ui_thread_weak_ptr_(weak_factory_on_ui_thread_.GetWeakPtr()),
ui_task_runner_(ui_task_runner),
- has_compositor_(false),
+ compositor_(NULL),
is_paused_(false),
view_visible_(false),
window_visible_(false),
@@ -145,8 +143,8 @@ BrowserViewRenderer::BrowserViewRenderer(
CHECK(web_contents_);
content::SynchronousCompositor::SetClientForWebContents(web_contents_, this);
- // Currently the logic in this class relies on |has_compositor_| remaining
- // false until the DidInitializeCompositor() call, hence it is not set here.
+ // Currently the logic in this class relies on |compositor_| remaining
+ // NULL until the DidInitializeCompositor() call, hence it is not set here.
}
BrowserViewRenderer::~BrowserViewRenderer() {
@@ -179,7 +177,7 @@ void BrowserViewRenderer::TrimMemory(const int level, const bool visible) {
// Just set the memory limit to 0 and drop all tiles. This will be reset to
// normal levels in the next DrawGL call.
SynchronousCompositorMemoryPolicy zero_policy;
- if (shared_renderer_state_->GetMemoryPolicy() == zero_policy)
+ if (memory_policy_ == zero_policy)
return;
TRACE_EVENT0("android_webview", "BrowserViewRenderer::TrimMemory");
@@ -225,24 +223,21 @@ void BrowserViewRenderer::SetNumTiles(size_t num_tiles,
return;
num_tiles_ = num_tiles;
- SynchronousCompositorMemoryPolicy new_policy;
- new_policy.num_resources_limit = num_tiles_;
- new_policy.bytes_limit = num_bytes_;
- shared_renderer_state_->SetMemoryPolicy(new_policy);
+ memory_policy_.num_resources_limit = num_tiles_;
+ memory_policy_.bytes_limit = num_bytes_;
if (effective_immediately)
- EnforceMemoryPolicyImmediately(new_policy);
+ EnforceMemoryPolicyImmediately(memory_policy_);
}
void BrowserViewRenderer::EnforceMemoryPolicyImmediately(
SynchronousCompositorMemoryPolicy new_policy) {
- shared_renderer_state_->GetCompositor()->SetMemoryPolicy(new_policy);
+ compositor_->SetMemoryPolicy(new_policy);
ForceFakeCompositeSW();
- shared_renderer_state_->SetMemoryPolicyDirty(false);
}
size_t BrowserViewRenderer::GetNumTiles() const {
- return shared_renderer_state_->GetMemoryPolicy().num_resources_limit;
+ return memory_policy_.num_resources_limit;
}
bool BrowserViewRenderer::OnDraw(jobject java_canvas,
@@ -256,57 +251,20 @@ bool BrowserViewRenderer::OnDraw(jobject java_canvas,
if (clear_view_)
return false;
- if (is_hardware_canvas && attached_to_window_) {
- if (switches::UbercompEnabled()) {
- return OnDrawHardware(java_canvas);
- } else {
- return OnDrawHardwareLegacy(java_canvas);
- }
- }
+ if (is_hardware_canvas && attached_to_window_)
+ return OnDrawHardware(java_canvas);
// Perform a software draw
return DrawSWInternal(java_canvas, clip);
}
-bool BrowserViewRenderer::OnDrawHardwareLegacy(jobject java_canvas) {
- scoped_ptr<DrawGLInput> draw_gl_input(new DrawGLInput);
- draw_gl_input->scroll_offset = last_on_draw_scroll_offset_;
- draw_gl_input->global_visible_rect = last_on_draw_global_visible_rect_;
- draw_gl_input->width = width_;
- draw_gl_input->height = height_;
-
- SynchronousCompositorMemoryPolicy old_policy =
- shared_renderer_state_->GetMemoryPolicy();
- SynchronousCompositorMemoryPolicy new_policy = CalculateDesiredMemoryPolicy();
- RequestMemoryPolicy(new_policy);
- // We should be performing a hardware draw here. If we don't have the
- // compositor yet or if RequestDrawGL fails, it means we failed this draw
- // and thus return false here to clear to background color for this draw.
- bool did_draw_gl =
- has_compositor_ && client_->RequestDrawGL(java_canvas, false);
- if (did_draw_gl) {
- GlobalTileManager::GetInstance()->DidUse(tile_manager_key_);
- shared_renderer_state_->SetDrawGLInput(draw_gl_input.Pass());
- } else {
- RequestMemoryPolicy(old_policy);
- }
-
- return did_draw_gl;
-}
-
-void BrowserViewRenderer::DidDrawGL(scoped_ptr<DrawGLResult> result) {
- DidComposite(!result->clip_contains_visible_rect);
hush (inactive) 2014/06/16 21:41:50 after you delete this line, DidComposite will alwa
boliu 2014/06/16 22:43:27 Good catch. Removed the arg to DidComposite Force
-}
-
bool BrowserViewRenderer::OnDrawHardware(jobject java_canvas) {
- if (!has_compositor_)
+ if (!compositor_)
return false;
if (!hardware_enabled_) {
- hardware_enabled_ =
- shared_renderer_state_->GetCompositor()->InitializeHwDraw(NULL);
+ hardware_enabled_ = compositor_->InitializeHwDraw(NULL);
hush (inactive) 2014/06/16 21:41:50 what does it mean to initialize hw draw with a NUL
boliu 2014/06/16 22:43:27 Good catch again, removed the GLSurface path. Nor
if (hardware_enabled_) {
- gpu::GLInProcessContext* share_context =
- shared_renderer_state_->GetCompositor()->GetShareContext();
+ gpu::GLInProcessContext* share_context = compositor_->GetShareContext();
DCHECK(share_context);
shared_renderer_state_->SetSharedContext(share_context);
}
@@ -317,12 +275,10 @@ bool BrowserViewRenderer::OnDrawHardware(jobject java_canvas) {
ReturnResources();
SynchronousCompositorMemoryPolicy new_policy = CalculateDesiredMemoryPolicy();
RequestMemoryPolicy(new_policy);
- shared_renderer_state_->GetCompositor()->SetMemoryPolicy(
- shared_renderer_state_->GetMemoryPolicy());
+ compositor_->SetMemoryPolicy(memory_policy_);
scoped_ptr<DrawGLInput> draw_gl_input(new DrawGLInput);
draw_gl_input->scroll_offset = last_on_draw_scroll_offset_;
- draw_gl_input->global_visible_rect = last_on_draw_global_visible_rect_;
draw_gl_input->width = width_;
draw_gl_input->height = height_;
@@ -333,9 +289,8 @@ bool BrowserViewRenderer::OnDrawHardware(jobject java_canvas) {
// See crbug.com/372073.
gfx::Rect clip = viewport;
bool stencil_enabled = false;
- scoped_ptr<cc::CompositorFrame> frame =
- shared_renderer_state_->GetCompositor()->DemandDrawHw(
- surface_size, transform, viewport, clip, stencil_enabled);
+ scoped_ptr<cc::CompositorFrame> frame = compositor_->DemandDrawHw(
+ surface_size, transform, viewport, clip, stencil_enabled);
if (!frame.get())
return false;
@@ -358,13 +313,12 @@ bool BrowserViewRenderer::OnDrawHardware(jobject java_canvas) {
return false;
}
-void BrowserViewRenderer::DidDrawDelegated(scoped_ptr<DrawGLResult> result) {
+void BrowserViewRenderer::DidDrawDelegated() {
if (!ui_task_runner_->BelongsToCurrentThread()) {
// TODO(boliu): This should be a cancelable callback.
ui_task_runner_->PostTask(FROM_HERE,
base::Bind(&BrowserViewRenderer::DidDrawDelegated,
- ui_thread_weak_ptr_,
- base::Passed(&result)));
+ ui_thread_weak_ptr_));
return;
}
ReturnResources();
@@ -374,7 +328,7 @@ void BrowserViewRenderer::ReturnResources() {
cc::CompositorFrameAck frame_ack;
shared_renderer_state_->SwapReturnedResources(&frame_ack.resources);
if (!frame_ack.resources.empty()) {
- shared_renderer_state_->GetCompositor()->ReturnResources(frame_ack);
+ compositor_->ReturnResources(frame_ack);
}
}
@@ -386,7 +340,7 @@ bool BrowserViewRenderer::DrawSWInternal(jobject java_canvas,
return true;
}
- if (!has_compositor_) {
+ if (!compositor_) {
TRACE_EVENT_INSTANT0(
"android_webview", "EarlyOut_NoCompositor", TRACE_EVENT_SCOPE_THREAD);
return false;
@@ -417,7 +371,7 @@ skia::RefPtr<SkPicture> BrowserViewRenderer::CapturePicture(int width,
SkPictureRecorder recorder;
SkCanvas* rec_canvas = recorder.beginRecording(width, height, NULL, 0);
- if (has_compositor_)
+ if (compositor_)
CompositeSW(rec_canvas);
return skia::AdoptRef(recorder.endRecording());
}
@@ -504,8 +458,7 @@ void BrowserViewRenderer::OnDetachedFromWindow() {
ReturnResources();
DCHECK(shared_renderer_state_->ReturnedResourcesEmpty());
- if (switches::UbercompEnabled())
- shared_renderer_state_->GetCompositor()->ReleaseHwDraw();
+ compositor_->ReleaseHwDraw();
shared_renderer_state_->SetSharedContext(NULL);
hardware_enabled_ = false;
}
@@ -535,21 +488,19 @@ void BrowserViewRenderer::DidInitializeCompositor(
TRACE_EVENT0("android_webview",
"BrowserViewRenderer::DidInitializeCompositor");
DCHECK(compositor);
- DCHECK(!has_compositor_);
+ DCHECK(!compositor_);
DCHECK(ui_task_runner_->BelongsToCurrentThread());
- has_compositor_ = true;
- shared_renderer_state_->SetCompositorOnUiThread(compositor);
+ compositor_ = compositor;
}
void BrowserViewRenderer::DidDestroyCompositor(
content::SynchronousCompositor* compositor) {
TRACE_EVENT0("android_webview", "BrowserViewRenderer::DidDestroyCompositor");
- DCHECK(has_compositor_);
+ DCHECK(compositor_);
DCHECK(ui_task_runner_->BelongsToCurrentThread());
- has_compositor_ = false;
- shared_renderer_state_->SetCompositorOnUiThread(NULL);
+ compositor_ = NULL;
SynchronousCompositorMemoryPolicy zero_policy;
- DCHECK(shared_renderer_state_->GetMemoryPolicy() == zero_policy);
+ DCHECK(memory_policy_ == zero_policy);
}
void BrowserViewRenderer::SetContinuousInvalidate(bool invalidate) {
@@ -625,9 +576,8 @@ void BrowserViewRenderer::ScrollTo(gfx::Vector2d scroll_offset) {
"y",
scroll_offset_dip.y());
- if (has_compositor_)
- shared_renderer_state_->GetCompositor()->
- DidChangeRootLayerScrollOffset();
+ if (compositor_)
+ compositor_->DidChangeRootLayerScrollOffset();
}
void BrowserViewRenderer::DidUpdateContent() {
@@ -835,12 +785,12 @@ void BrowserViewRenderer::FallbackTickFired() {
// This should only be called if OnDraw or DrawGL did not come in time, which
// means block_invalidates_ must still be true.
DCHECK(block_invalidates_);
- if (compositor_needs_continuous_invalidate_ && has_compositor_)
+ if (compositor_needs_continuous_invalidate_ && compositor_)
ForceFakeCompositeSW();
}
void BrowserViewRenderer::ForceFakeCompositeSW() {
- DCHECK(has_compositor_);
+ DCHECK(compositor_);
SkBitmap bitmap;
bitmap.allocN32Pixels(1, 1);
bitmap.eraseColor(0);
@@ -849,9 +799,8 @@ void BrowserViewRenderer::ForceFakeCompositeSW() {
}
bool BrowserViewRenderer::CompositeSW(SkCanvas* canvas) {
- DCHECK(has_compositor_);
- bool result = shared_renderer_state_->GetCompositor()->
- DemandDrawSw(canvas);
+ DCHECK(compositor_);
+ bool result = compositor_->DemandDrawSw(canvas);
DidComposite(false);
return result;
}

Powered by Google App Engine
This is Rietveld 408576698