| Index: content/browser/renderer_host/render_widget_host_impl.cc
|
| diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc
|
| index 759d6526d4c410bab7c55a45e972ed62fe351007..2c57a2b78d543dafaff3170cf9d2447cc2ce5d62 100644
|
| --- a/content/browser/renderer_host/render_widget_host_impl.cc
|
| +++ b/content/browser/renderer_host/render_widget_host_impl.cc
|
| @@ -235,6 +235,8 @@ RenderWidgetHostImpl::RenderWidgetHostImpl(RenderWidgetHostDelegate* delegate,
|
| }
|
|
|
| RenderWidgetHostImpl::~RenderWidgetHostImpl() {
|
| + if (view_weak_)
|
| + view_weak_->RenderWidgetHostGone();
|
| SetView(NULL);
|
|
|
| GpuSurfaceTracker::Get()->RemoveSurface(surface_id_);
|
| @@ -310,6 +312,10 @@ RenderWidgetHostImpl* RenderWidgetHostImpl::From(RenderWidgetHost* rwh) {
|
| }
|
|
|
| void RenderWidgetHostImpl::SetView(RenderWidgetHostViewBase* view) {
|
| + if (view)
|
| + view_weak_ = view->GetWeakPtr();
|
| + else
|
| + view_weak_.reset();
|
| view_ = view;
|
|
|
| GpuSurfaceTracker::Get()->SetSurfaceHandle(
|
| @@ -1219,7 +1225,8 @@ void RenderWidgetHostImpl::RendererExited(base::TerminationStatus status,
|
| GpuSurfaceTracker::Get()->SetSurfaceHandle(surface_id_,
|
| gfx::GLSurfaceHandle());
|
| view_->RenderProcessGone(status, exit_code);
|
| - view_ = NULL; // The View should be deleted by RenderProcessGone.
|
| + view_ = NULL; // The View should be deleted by RenderProcessGone.
|
| + view_weak_.reset();
|
| }
|
|
|
| // Reconstruct the input router to ensure that it has fresh state for a new
|
|
|