| Index: content/browser/renderer_host/media/web_contents_video_capture_device.cc
|
| diff --git a/content/browser/renderer_host/media/web_contents_video_capture_device.cc b/content/browser/renderer_host/media/web_contents_video_capture_device.cc
|
| index 66385265dae28634c4b804d87307e29e5eec0aa8..637dd1db85ae00b2cf8c3a5a685b05cb9b1263eb 100644
|
| --- a/content/browser/renderer_host/media/web_contents_video_capture_device.cc
|
| +++ b/content/browser/renderer_host/media/web_contents_video_capture_device.cc
|
| @@ -989,7 +989,15 @@ void BackingStoreCopier::StartCopy(
|
| TRACE_EVENT_ASYNC_BEGIN1("mirroring", "Capture", this,
|
| "frame_number", frame_number);
|
|
|
| - if (view && view->CanCopyToVideoFrame()) {
|
| + if (!view->IsSurfaceAvailableForCopy()) {
|
| + // Fallback to the more expensive renderer-side copy if the surface and
|
| + // backing store are not accessible.
|
| + rwh->GetSnapshotFromRenderer(
|
| + gfx::Rect(),
|
| + base::Bind(&BackingStoreCopier::DidCopyFromBackingStore,
|
| + base::Unretained(this), frame_number,
|
| + base::Time::Now(), callback));
|
| + } else if (view && view->CanCopyToVideoFrame()) {
|
| gfx::Size view_size = view->GetViewBounds().size();
|
|
|
| view->CopyFromCompositingSurfaceToVideoFrame(
|
|
|