Hide the DelegatedFrameHost when RenderProcessGone() is called. This avoids a crash due to DelegatedFrameHost calling GetHost() after RenderProcessGone() has been called.
git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@1915 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
parent
5389b98085
commit
f963f10acb
|
@ -414,6 +414,7 @@ void CefRenderWidgetHostViewOSR::RenderProcessGone(
|
||||||
base::TerminationStatus status,
|
base::TerminationStatus status,
|
||||||
int error_code) {
|
int error_code) {
|
||||||
// TODO(OSR): Need to also clear WebContentsViewOSR::view_?
|
// TODO(OSR): Need to also clear WebContentsViewOSR::view_?
|
||||||
|
Destroy();
|
||||||
render_widget_host_ = NULL;
|
render_widget_host_ = NULL;
|
||||||
parent_host_view_ = NULL;
|
parent_host_view_ = NULL;
|
||||||
popup_host_view_ = NULL;
|
popup_host_view_ = NULL;
|
||||||
|
@ -595,6 +596,7 @@ ui::Layer* CefRenderWidgetHostViewOSR::GetLayer() {
|
||||||
}
|
}
|
||||||
|
|
||||||
content::RenderWidgetHostImpl* CefRenderWidgetHostViewOSR::GetHost() {
|
content::RenderWidgetHostImpl* CefRenderWidgetHostViewOSR::GetHost() {
|
||||||
|
DCHECK(render_widget_host_);
|
||||||
return render_widget_host_;
|
return render_widget_host_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -846,6 +848,9 @@ void CefRenderWidgetHostViewOSR::InternalGenerateFrame() {
|
||||||
frame_pending_ = false;
|
frame_pending_ = false;
|
||||||
frame_start_time_ = base::TimeTicks::Now();
|
frame_start_time_ = base::TimeTicks::Now();
|
||||||
|
|
||||||
|
if (!render_widget_host_)
|
||||||
|
return;
|
||||||
|
|
||||||
// The below code is similar in functionality to
|
// The below code is similar in functionality to
|
||||||
// DelegatedFrameHost::CopyFromCompositingSurface but we reuse the same
|
// DelegatedFrameHost::CopyFromCompositingSurface but we reuse the same
|
||||||
// SkBitmap in the GPU codepath and avoid scaling where possible.
|
// SkBitmap in the GPU codepath and avoid scaling where possible.
|
||||||
|
@ -863,7 +868,7 @@ void CefRenderWidgetHostViewOSR::InternalGenerateFrame() {
|
||||||
|
|
||||||
void CefRenderWidgetHostViewOSR::CopyFromCompositingSurfaceHasResult(
|
void CefRenderWidgetHostViewOSR::CopyFromCompositingSurfaceHasResult(
|
||||||
scoped_ptr<cc::CopyOutputResult> result) {
|
scoped_ptr<cc::CopyOutputResult> result) {
|
||||||
if (result->IsEmpty() || result->size().IsEmpty()) {
|
if (result->IsEmpty() || result->size().IsEmpty() || !render_widget_host_) {
|
||||||
OnFrameCaptureFailure();
|
OnFrameCaptureFailure();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue