Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(991)

Unified Diff: content/browser/frame_host/render_widget_host_view_child_frame.cc

Issue 2527283003: cc: Introduce BeginFrame sequence numbers and acknowledgements.
Patch Set: Address Brian's comments. Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/frame_host/render_widget_host_view_child_frame.cc
diff --git a/content/browser/frame_host/render_widget_host_view_child_frame.cc b/content/browser/frame_host/render_widget_host_view_child_frame.cc
index 56e95b8775151d8ae88efa65e29b402e7919ef80..8fc135be1426b49917ad15bb1a89fbd755c76172 100644
--- a/content/browser/frame_host/render_widget_host_view_child_frame.cc
+++ b/content/browser/frame_host/render_widget_host_view_child_frame.cc
@@ -404,6 +404,10 @@ void RenderWidgetHostViewChildFrame::OnSwapCompositorFrame(
allocated_new_local_frame_id = true;
}
+ uint64_t begin_frame_source_id = frame.metadata.begin_frame_source_id;
+ uint64_t begin_frame_number = frame.metadata.begin_frame_number;
+ uint64_t latest_confirmed_frame = frame.metadata.latest_confirmed_frame;
+
cc::SurfaceFactory::DrawCallback ack_callback =
base::Bind(&RenderWidgetHostViewChildFrame::SurfaceDrawn, AsWeakPtr(),
compositor_frame_sink_id);
@@ -426,6 +430,14 @@ void RenderWidgetHostViewChildFrame::OnSwapCompositorFrame(
scale_factor, sequence);
}
ProcessFrameSwappedCallbacks();
+ DidSwapFrame(begin_frame_source_id, begin_frame_number,
+ latest_confirmed_frame);
+}
+
+void RenderWidgetHostViewChildFrame::OnBeginFrameDidNotDraw(
+ const cc::BeginFrameAck& ack) {
+ if (begin_frame_source_)
+ begin_frame_source_->DidFinishFrame(this, ack);
}
void RenderWidgetHostViewChildFrame::ProcessFrameSwappedCallbacks() {
@@ -437,6 +449,16 @@ void RenderWidgetHostViewChildFrame::ProcessFrameSwappedCallbacks() {
callback->Run();
}
+void RenderWidgetHostViewChildFrame::DidSwapFrame(
+ uint64_t source_id,
+ uint64_t sequence_number,
+ uint64_t latest_confirmed_frame) {
+ cc::BeginFrameAck ack(source_id, sequence_number, latest_confirmed_frame,
+ 0, true);
+ if (begin_frame_source_)
+ begin_frame_source_->DidFinishFrame(this, ack);
+}
+
gfx::Rect RenderWidgetHostViewChildFrame::GetBoundsInRootWindow() {
gfx::Rect rect;
if (frame_connector_) {

Powered by Google App Engine
This is Rietveld 408576698