diff options
author | 2020-09-23 23:48:31 +0000 | |
---|---|---|
committer | 2020-09-23 23:48:31 +0000 | |
commit | 112da3a907c28fc1afb0c577d9711f7cc44ec329 (patch) | |
tree | 408e7cd6ec1c9661b15c6ea0ba314d06671bb1ee | |
parent | 3c21a5608428fc11589d8af5d59c3f9f418edafb (diff) | |
parent | 63bd9936da85a2119b6137d85cd1abed8c608029 (diff) |
Merge "Handle defer transactions on a detached layer" into rvc-qpr-dev
-rw-r--r-- | services/surfaceflinger/Layer.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp index 03903f6d07..3b9c7b77c7 100644 --- a/services/surfaceflinger/Layer.cpp +++ b/services/surfaceflinger/Layer.cpp @@ -1445,6 +1445,13 @@ Layer::FrameRate Layer::getFrameRateForLayerTree() const { void Layer::deferTransactionUntil_legacy(const sp<Layer>& barrierLayer, uint64_t frameNumber) { ATRACE_CALL(); + if (mLayerDetached) { + // If the layer is detached, then we don't defer this transaction since we will not + // commit the pending state while the layer is detached. Adding sync points may cause + // the barrier layer to wait for the states to be committed before dequeuing a buffer. + return; + } + mCurrentState.barrierLayer_legacy = barrierLayer; mCurrentState.frameNumber_legacy = frameNumber; // We don't set eTransactionNeeded, because just receiving a deferral |