Update sideband stream when layer has queued a buffer

Layer which is disconnected from the sideband stream
cannot display a queued frame. This CL updates the
sideband when a frame is queued.

Bug: 159511848
Test: m surfaceflinger
Test: run the test from b/159511848
Change-Id: Iec532d63880b218fba5f3ccc7056ca4d283f32c6
diff --git a/services/surfaceflinger/BufferQueueLayer.cpp b/services/surfaceflinger/BufferQueueLayer.cpp
index 07be791..09c10e0 100644
--- a/services/surfaceflinger/BufferQueueLayer.cpp
+++ b/services/surfaceflinger/BufferQueueLayer.cpp
@@ -208,8 +208,14 @@
 }
 
 bool BufferQueueLayer::latchSidebandStream(bool& recomputeVisibleRegions) {
+    const bool updateSidebandStream = hasFrameUpdate() && mSidebandStream.get();
+    ALOGV_IF(updateSidebandStream,
+             "[%s] has both sideband stream and buffer. Updating the sideband stream.",
+             mName.c_str());
+
     bool sidebandStreamChanged = true;
-    if (mSidebandStreamChanged.compare_exchange_strong(sidebandStreamChanged, false)) {
+    if (mSidebandStreamChanged.compare_exchange_strong(sidebandStreamChanged, false) ||
+        updateSidebandStream) {
         // mSidebandStreamChanged was changed to false
         mSidebandStream = mConsumer->getSidebandStream();
         auto* layerCompositionState = editCompositionState();