2018-09-27 16:00:45 +02:00
|
|
|
diff --git content/browser/renderer_host/render_widget_host_view_child_frame.cc content/browser/renderer_host/render_widget_host_view_child_frame.cc
|
2019-02-20 19:42:36 -05:00
|
|
|
index 5d42110bf368..146cc5c81eba 100644
|
2018-09-27 16:00:45 +02:00
|
|
|
--- content/browser/renderer_host/render_widget_host_view_child_frame.cc
|
|
|
|
+++ content/browser/renderer_host/render_widget_host_view_child_frame.cc
|
2019-02-20 19:42:36 -05:00
|
|
|
@@ -652,6 +652,7 @@ void RenderWidgetHostViewChildFrame::SubmitCompositorFrame(
|
2018-09-27 16:00:45 +02:00
|
|
|
"RenderWidgetHostViewChildFrame::OnSwapCompositorFrame");
|
|
|
|
support_->SubmitCompositorFrame(local_surface_id, std::move(frame),
|
|
|
|
std::move(hit_test_region_list));
|
|
|
|
+ ProcessFrameSwappedCallbacks();
|
|
|
|
}
|
|
|
|
|
|
|
|
void RenderWidgetHostViewChildFrame::OnDidNotProduceFrame(
|
2019-02-20 19:42:36 -05:00
|
|
|
@@ -660,6 +661,15 @@ void RenderWidgetHostViewChildFrame::OnDidNotProduceFrame(
|
2018-11-30 17:21:07 -05:00
|
|
|
support_->DidNotProduceFrame(ack);
|
2018-09-27 16:00:45 +02:00
|
|
|
}
|
|
|
|
|
2018-11-30 17:21:07 -05:00
|
|
|
+void RenderWidgetHostViewChildFrame::ProcessFrameSwappedCallbacks() {
|
|
|
|
+ std::vector<base::OnceClosure> process_callbacks;
|
|
|
|
+ // Swap the vectors to avoid re-entrancy issues due to calls to
|
|
|
|
+ // RegisterFrameSwappedCallback() while running the OnceClosures.
|
|
|
|
+ process_callbacks.swap(frame_swapped_callbacks_);
|
|
|
|
+ for (base::OnceClosure& callback : process_callbacks)
|
|
|
|
+ std::move(callback).Run();
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
void RenderWidgetHostViewChildFrame::TransformPointToRootSurface(
|
|
|
|
gfx::PointF* point) {
|
|
|
|
// This function is called by RenderWidgetHostInputEventRouter only for
|
2019-02-20 19:42:36 -05:00
|
|
|
@@ -845,6 +855,11 @@ void RenderWidgetHostViewChildFrame::ShowDefinitionForSelection() {
|
2018-11-30 17:21:07 -05:00
|
|
|
void RenderWidgetHostViewChildFrame::SpeakSelection() {}
|
|
|
|
#endif // defined(OS_MACOSX)
|
|
|
|
|
|
|
|
+void RenderWidgetHostViewChildFrame::RegisterFrameSwappedCallback(
|
|
|
|
+ base::OnceClosure callback) {
|
|
|
|
+ frame_swapped_callbacks_.emplace_back(std::move(callback));
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
void RenderWidgetHostViewChildFrame::CopyFromSurface(
|
|
|
|
const gfx::Rect& src_subrect,
|
|
|
|
const gfx::Size& output_size,
|