| Index: content/browser/renderer_host/render_widget_host_view_win.cc
|
| diff --git a/content/browser/renderer_host/render_widget_host_view_win.cc b/content/browser/renderer_host/render_widget_host_view_win.cc
|
| index 0096c0e8a3f39fa4a459dcd122c613ff90d61466..a1abfd8e18e152a2089046d77c2e41f074c0693a 100644
|
| --- a/content/browser/renderer_host/render_widget_host_view_win.cc
|
| +++ b/content/browser/renderer_host/render_widget_host_view_win.cc
|
| @@ -819,14 +819,34 @@ void RenderWidgetHostViewWin::CopyFromCompositingSurface(
|
| if (!accelerated_surface_.get())
|
| return;
|
|
|
| - if (dst_size.IsEmpty())
|
| + if (dst_size.IsEmpty() || src_subrect.IsEmpty())
|
| return;
|
|
|
| scoped_callback_runner.Release();
|
| - accelerated_surface_->AsyncCopyTo(
|
| - src_subrect,
|
| - dst_size,
|
| - callback);
|
| + accelerated_surface_->AsyncCopyTo(src_subrect, dst_size, callback);
|
| +}
|
| +
|
| +void RenderWidgetHostViewWin::CopyFromCompositingSurfaceToVideoFrame(
|
| + const gfx::Rect& src_subrect,
|
| + const scoped_refptr<media::VideoFrame>& target,
|
| + const base::Callback<void(bool)>& callback) {
|
| + base::ScopedClosureRunner scoped_callback_runner(base::Bind(callback, false));
|
| + if (!accelerated_surface_.get())
|
| + return;
|
| +
|
| + if (!target || target->format() != media::VideoFrame::YV12)
|
| + return;
|
| +
|
| + if (src_subrect.IsEmpty())
|
| + return;
|
| +
|
| + scoped_callback_runner.Release();
|
| + accelerated_surface_->AsyncCopyToVideoFrame(src_subrect, target, callback);
|
| +}
|
| +
|
| +bool RenderWidgetHostViewWin::CanCopyToVideoFrame() const {
|
| + return accelerated_surface_.get() && render_widget_host_ &&
|
| + render_widget_host_->is_accelerated_compositing_active();
|
| }
|
|
|
| void RenderWidgetHostViewWin::SetBackground(const SkBitmap& background) {
|
|
|