From 57f748c78d326521fc50d2336373117bb819764b Mon Sep 17 00:00:00 2001 From: John Reck Date: Thu, 17 Mar 2022 17:23:49 -0400 Subject: Support setBuffer w/ release callback Allow setBuffer to take a release callback without passing a frame number. A fallback frame number on the target SurfaceControl is used instead. Bug: 220897032 Test: SurfaceControlTest CTS Change-Id: Ib110755e2887396d41a5d52af1305ccc2bf0e9bd --- libs/gui/SurfaceControl.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'libs/gui/SurfaceControl.cpp') diff --git a/libs/gui/SurfaceControl.cpp b/libs/gui/SurfaceControl.cpp index 6529a4e51c..063dda5153 100644 --- a/libs/gui/SurfaceControl.cpp +++ b/libs/gui/SurfaceControl.cpp @@ -280,5 +280,18 @@ sp SurfaceControl::getParentingLayer() { return this; } +uint64_t SurfaceControl::resolveFrameNumber(const std::optional& frameNumber) { + if (frameNumber.has_value()) { + auto ret = frameNumber.value(); + // Set the fallback to something far enough ahead that in the unlikely event of mixed + // "real" frame numbers and fallback frame numbers, we still won't collide in any + // meaningful capacity + mFallbackFrameNumber = ret + 100; + return ret; + } else { + return mFallbackFrameNumber++; + } +} + // ---------------------------------------------------------------------------- }; // namespace android -- cgit v1.2.3-59-g8ed1b