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)); |