From dcba9e07976c20bb98a3e92aca149eacc6e59d2d Mon Sep 17 00:00:00 2001 From: chaviw Date: Mon, 21 Mar 2022 17:54:23 -0500 Subject: Use CacheId when buffer is null. It's likely the buffer is null even if eBufferChanged is set because we already cached the buffer. This can happen when the transaction is sent over IPC and we automatically cache the buffer. This change uses the cacheId if the buffer is null Test: Hard to repro Bug: 225815507 Change-Id: Ic95bfc179cc86e494943e9bd6e15cb9afd69f1df --- libs/gui/LayerState.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'libs') diff --git a/libs/gui/LayerState.cpp b/libs/gui/LayerState.cpp index 49b669eb3f..34db5b1626 100644 --- a/libs/gui/LayerState.cpp +++ b/libs/gui/LayerState.cpp @@ -774,7 +774,13 @@ status_t LayerCaptureArgs::readFromParcel(const Parcel* input) { }; // namespace gui ReleaseCallbackId BufferData::generateReleaseCallbackId() const { - return {buffer->getId(), frameNumber}; + uint64_t bufferId; + if (buffer) { + bufferId = buffer->getId(); + } else { + bufferId = cachedBuffer.id; + } + return {bufferId, frameNumber}; } status_t BufferData::writeToParcel(Parcel* output) const { -- cgit v1.2.3-59-g8ed1b