Index: android_webview/browser/hardware_renderer.cc |
diff --git a/android_webview/browser/hardware_renderer.cc b/android_webview/browser/hardware_renderer.cc |
index b4cc30fe769a9390e190ba1a674b6aa5acc8618f..8526fe084c355c892106ccfedbb3344c24998c39 100644 |
--- a/android_webview/browser/hardware_renderer.cc |
+++ b/android_webview/browser/hardware_renderer.cc |
@@ -167,7 +167,13 @@ void HardwareRenderer::DestroySurface() { |
DCHECK(child_id_.is_valid()); |
// Submit an empty frame to force any existing resources to be returned. |
- support_->SubmitCompositorFrame(child_id_, cc::CompositorFrame()); |
+ cc::CompositorFrame frame; |
+ // We submit without a prior BeginFrame, so acknowledge a manual BeginFrame. |
+ frame.metadata.begin_frame_ack = |
+ cc::BeginFrameAck(cc::BeginFrameArgs::kManualSourceId, |
+ cc::BeginFrameArgs::kStartingFrameNumber, |
+ cc::BeginFrameArgs::kStartingFrameNumber, 0, true); |
+ support_->SubmitCompositorFrame(child_id_, std::move(frame)); |
surfaces_->RemoveChildId(cc::SurfaceId(frame_sink_id_, child_id_)); |
support_->EvictFrame(); |
child_id_ = cc::LocalSurfaceId(); |