diff options
| author | 2021-05-13 18:51:28 +0800 | |
|---|---|---|
| committer | 2021-05-18 12:07:33 +0200 | |
| commit | a663c2bc47eee5279345c6f40bbae3deee69579c (patch) | |
| tree | 7cbd29c3466a2c362794db1798e0c730cb6410eb /services/surfaceflinger/BufferStateLayer.cpp | |
| parent | 5c234abdc306055436466acd8c9f6f1b78135741 (diff) | |
Update sideband stream when BufferStateLayer has receive a buffer
This CL updates the sideband when a frame is queued.
Bug: 186383891
Test: b/186383891#comment10
Change-Id: I8d753ba47e06ca969606b0f8709990a097a8ad21
Diffstat (limited to 'services/surfaceflinger/BufferStateLayer.cpp')
| -rw-r--r-- | services/surfaceflinger/BufferStateLayer.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/services/surfaceflinger/BufferStateLayer.cpp b/services/surfaceflinger/BufferStateLayer.cpp index 24b35997b9..78756dfdf1 100644 --- a/services/surfaceflinger/BufferStateLayer.cpp +++ b/services/surfaceflinger/BufferStateLayer.cpp @@ -622,7 +622,10 @@ void BufferStateLayer::setAutoRefresh(bool autoRefresh) { } bool BufferStateLayer::latchSidebandStream(bool& recomputeVisibleRegions) { - if (mSidebandStreamChanged.exchange(false)) { + // We need to update the sideband stream if the layer has both a buffer and a sideband stream. + const bool updateSidebandStream = hasFrameUpdate() && mSidebandStream.get(); + + if (mSidebandStreamChanged.exchange(false) || updateSidebandStream) { const State& s(getDrawingState()); // mSidebandStreamChanged was true mSidebandStream = s.sidebandStream; |