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

Unified Diff: cc/surfaces/compositor_frame_sink_support.h

Issue 2785103003: [cc] CompositorFrameSinkSupport: Defer BeginFrameAck of pending frames. (Closed)
Patch Set: add some comments, plumb SurfaceDiscarded. Created 3 years, 9 months 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: cc/surfaces/compositor_frame_sink_support.h
diff --git a/cc/surfaces/compositor_frame_sink_support.h b/cc/surfaces/compositor_frame_sink_support.h
index bdafb4933e6c0f752edc1fde38a9d63fd003d6b5..087415d0d034efd21c8f61f9ace011486f7b5d3b 100644
--- a/cc/surfaces/compositor_frame_sink_support.h
+++ b/cc/surfaces/compositor_frame_sink_support.h
@@ -68,6 +68,7 @@ class CC_SURFACES_EXPORT CompositorFrameSinkSupport
void RemoveTopLevelRootReference(const SurfaceId& surface_id);
void DidReceiveCompositorFrameAck();
+ void PendingFrameDiscarded();
// SurfaceFactoryClient implementation.
void ReferencedSurfacesChanged(
@@ -78,6 +79,8 @@ class CC_SURFACES_EXPORT CompositorFrameSinkSupport
void SetBeginFrameSource(BeginFrameSource* begin_frame_source) override;
void WillDrawSurface(const LocalSurfaceId& local_surface_id,
const gfx::Rect& damage_rect) override;
+ void PendingFrameActivated(const LocalSurfaceId& local_surface_id) override;
+ void SurfaceDiscarded(const LocalSurfaceId& local_surface_id) override;
// BeginFrameObserver implementation.
void OnBeginFrame(const BeginFrameArgs& args) override;
@@ -85,6 +88,8 @@ class CC_SURFACES_EXPORT CompositorFrameSinkSupport
void OnBeginFrameSourcePausedChanged(bool paused) override;
void UpdateNeedsBeginFramesInternal();
+ void AcknowledgeBeginFrame(const BeginFrameAck& ack);
Fady Samuel 2017/03/31 00:09:02 nit: comment.
Eric Seckler 2017/03/31 15:24:03 Done.
+ void AcknowledgeLastBeginFrameWithoutUpdates();
Fady Samuel 2017/03/31 00:09:02 nit: comment.
Eric Seckler 2017/03/31 15:24:03 Done.
CompositorFrameSinkSupportClient* const client_;
@@ -98,14 +103,29 @@ class CC_SURFACES_EXPORT CompositorFrameSinkSupport
int ack_pending_count_ = 0;
ReturnedResourceArray surface_returned_resources_;
+ // Whether a CompositorFrame is currently pending to be activated.
+ bool has_pending_frame_ = false;
Fady Samuel 2017/03/31 00:09:02 Surface already knows this.
Eric Seckler 2017/03/31 15:24:03 not quite: CFSSupport only acknowledges when a Com
+ LocalSurfaceId surface_id_for_pending_frame_;
Fady Samuel 2017/03/31 00:09:02 Do we need this?
Eric Seckler 2017/03/31 15:24:03 yeah, see comment in SurfaceDiscarded: If we submi
+
// The begin frame source being observered. Null if none.
BeginFrameSource* begin_frame_source_ = nullptr;
// The last begin frame args generated by the begin frame source.
BeginFrameArgs last_begin_frame_args_;
+ // The BeginFrameAck that will be issued when the last submitted
+ // CompositorFrame is activated.
+ BeginFrameAck begin_frame_ack_for_pending_frame_;
Fady Samuel 2017/03/31 00:09:02 Maybe either make this base::Optional<BeginFrameAc
Eric Seckler 2017/03/31 15:24:03 base::Optional it is! modify-in-place might be an
+
+ // Whether the last BeginFrame was forwarded to the client.
+ bool last_begin_frame_sent_to_client_ = true;
+
+ uint32_t latest_confirmed_begin_frame_source_id_ = 0;
+ uint64_t latest_confirmed_begin_frame_sequence_number_ =
+ BeginFrameArgs::kInvalidFrameNumber;
+
// Whether a request for begin frames has been issued.
- bool needs_begin_frame_ = false;
+ bool client_needs_begin_frame_ = false;
// Whether or not a frame observer has been added.
bool added_frame_observer_ = false;
« no previous file with comments | « no previous file | cc/surfaces/compositor_frame_sink_support.cc » ('j') | cc/surfaces/compositor_frame_sink_support.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698