BufferStateLayer: Mirror BufferQueue behavior in fence merging
We have two behavior changes here, lifted directly from ConsumerBase:
1. Don't overwrite our callback handle fence with an invalid
fence
2. If we are going to overwrite a non-null fence with a valid
one, attempt to merge them
Bug: 171370396
Test: Existing tests pass
Change-Id: Ie1cb0602393e5f520721a5cb89829fc342fbfc5f
diff --git a/services/surfaceflinger/BufferStateLayer.h b/services/surfaceflinger/BufferStateLayer.h
index 42be62a..c0ceced 100644
--- a/services/surfaceflinger/BufferStateLayer.h
+++ b/services/surfaceflinger/BufferStateLayer.h
@@ -122,6 +122,8 @@
bool updateFrameEventHistory(const sp<Fence>& acquireFence, nsecs_t postedTime,
nsecs_t requestedPresentTime);
+ status_t addReleaseFence(const sp<CallbackHandle>& ch, const sp<Fence>& releaseFence);
+
uint64_t getFrameNumber(nsecs_t expectedPresentTime) const override;
bool latchSidebandStream(bool& recomputeVisibleRegions) override;