Chromium Code Reviews| 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)); |