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

Unified Diff: android_webview/native/aw_contents.cc

Issue 655813004: Part 1: Refactor Android WebView graphics code (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@refactor
Patch Set: rebase 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
Index: android_webview/native/aw_contents.cc
diff --git a/android_webview/native/aw_contents.cc b/android_webview/native/aw_contents.cc
index eac46000a7d7738f2eca7d19275b246f43b530dd..6b606981879c0d247de00890a459fb61b83bc33f 100644
--- a/android_webview/native/aw_contents.cc
+++ b/android_webview/native/aw_contents.cc
@@ -160,16 +160,18 @@ AwBrowserPermissionRequestDelegate* AwBrowserPermissionRequestDelegate::FromID(
AwContents::AwContents(scoped_ptr<WebContents> web_contents)
: web_contents_(web_contents.Pass()),
- shared_renderer_state_(
+ compositor_proxy_(
BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI),
this),
browser_view_renderer_(
- this,
- &shared_renderer_state_,
+ this /* AwGLMethods */,
+ this /* BrowserViewRendererClient */,
+ &compositor_proxy_,
web_contents_.get(),
BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI)),
renderer_manager_key_(GLViewRendererManager::GetInstance()->NullKey()) {
base::subtle::NoBarrier_AtomicIncrement(&g_instance_count, 1);
+ compositor_proxy_.SetBrowserViewRenderer(&browser_view_renderer_);
boliu 2014/10/23 16:40:05 need to set it to null in the destructor, and in t
hush (inactive) 2014/10/24 21:31:33 yeah. We changed the object ownership model as dis
icon_helper_.reset(new IconHelper(web_contents_.get()));
icon_helper_->SetListener(this);
web_contents_->SetUserData(kAwContentsUserDataKey,
@@ -375,10 +377,10 @@ void AwContents::DrawGL(AwDrawGLInfo* draw_info) {
// corruption.
if (draw_info->mode == AwDrawGLInfo::kModeProcess ||
draw_info->mode == AwDrawGLInfo::kModeProcessNoContext) {
- shared_renderer_state_.DidDrawGLProcess();
+ compositor_proxy_.DidDrawGLProcess();
}
- if (shared_renderer_state_.IsInsideHardwareRelease()) {
+ if (compositor_proxy_.IsInsideHardwareRelease()) {
hardware_renderer_.reset();
// Flush the idle queue in tear down.
DeferredGpuCommandService::GetInstance()->PerformAllIdleWork();
@@ -393,7 +395,7 @@ void AwContents::DrawGL(AwDrawGLInfo* draw_info) {
}
if (!hardware_renderer_) {
- hardware_renderer_.reset(new HardwareRenderer(&shared_renderer_state_));
+ hardware_renderer_.reset(new HardwareRenderer(&compositor_proxy_));
hardware_renderer_->CommitFrame();
}
@@ -769,16 +771,6 @@ void AwContents::PostInvalidate() {
Java_AwContents_postInvalidateOnAnimation(env, obj.obj());
}
-void AwContents::UpdateParentDrawConstraints() {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- browser_view_renderer_.UpdateParentDrawConstraints();
-}
-
-void AwContents::DidSkipCommitFrame() {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- browser_view_renderer_.DidSkipCommitFrame();
-}
-
void AwContents::OnNewPicture() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
JNIEnv* env = AttachCurrentThread();
@@ -888,7 +880,7 @@ void AwContents::InitializeHardwareDrawIfNeeded() {
base::AutoLock lock(render_thread_lock_);
if (renderer_manager_key_ == manager->NullKey()) {
- renderer_manager_key_ = manager->PushBack(&shared_renderer_state_);
+ renderer_manager_key_ = manager->PushBack(&compositor_proxy_);
DeferredGpuCommandService::SetInstance();
}
}
@@ -900,12 +892,9 @@ void AwContents::OnDetachedFromWindow(JNIEnv* env, jobject obj) {
}
void AwContents::ReleaseHardwareDrawIfNeeded() {
- InsideHardwareReleaseReset inside_reset(&shared_renderer_state_);
+ InsideHardwareReleaseReset inside_reset(&compositor_proxy_);
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
- if (!obj.is_null())
- Java_AwContents_invalidateOnFunctorDestroy(env, obj.obj());
+ InvalidateOnFunctorDestroy();
bool hardware_initialized = browser_view_renderer_.hardware_enabled();
if (hardware_initialized) {
@@ -937,6 +926,13 @@ void AwContents::ReleaseHardwareDrawIfNeeded() {
}
}
+void AwContents::InvalidateOnFunctorDestroy() {
+ JNIEnv* env = AttachCurrentThread();
+ ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
+ if (!obj.is_null())
+ Java_AwContents_invalidateOnFunctorDestroy(env, obj.obj());
+}
+
base::android::ScopedJavaLocalRef<jbyteArray>
AwContents::GetOpaqueState(JNIEnv* env, jobject obj) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
« android_webview/browser/hardware_renderer_proxy.h ('K') | « android_webview/native/aw_contents.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698