Revert "BBQ: Clean up acquire states on BQ disconnect"
This reverts commit 9051fb1885df913eecfa9072155797bdaf05d278.
Reason for revert: Potential culprit CL for broken test b/205665388
Change-Id: Iba58d8de19851beedf46511fbefa837e3f3f7ad2
diff --git a/libs/gui/BLASTBufferQueue.cpp b/libs/gui/BLASTBufferQueue.cpp
index 9cb7c88..9080822 100644
--- a/libs/gui/BLASTBufferQueue.cpp
+++ b/libs/gui/BLASTBufferQueue.cpp
@@ -58,22 +58,13 @@
ALOGE("[%s](f:%u,a:%u) " x, mName.c_str(), mNumFrameAvailable, mNumAcquired, ##__VA_ARGS__)
void BLASTBufferItemConsumer::onDisconnect() {
- {
- Mutex::Autolock lock(mMutex);
- mPreviouslyConnected = mCurrentlyConnected;
- mCurrentlyConnected = false;
- if (mPreviouslyConnected) {
- mDisconnectEvents.push(mCurrentFrameNumber);
- }
- mFrameEventHistory.onDisconnect();
+ Mutex::Autolock lock(mMutex);
+ mPreviouslyConnected = mCurrentlyConnected;
+ mCurrentlyConnected = false;
+ if (mPreviouslyConnected) {
+ mDisconnectEvents.push(mCurrentFrameNumber);
}
-
- {
- std::scoped_lock lock(mBufferQueueMutex);
- if (mBLASTBufferQueue != nullptr) {
- mBLASTBufferQueue->onProducerDisconnect();
- }
- }
+ mFrameEventHistory.onDisconnect();
}
void BLASTBufferItemConsumer::addAndGetFrameTimestamps(const NewFrameEventsEntry* newTimestamps,
@@ -211,11 +202,7 @@
}
SurfaceComposerClient::Transaction t;
- bool setBackpressureFlag = false;
- if (!SurfaceControl::isSameSurface(mSurfaceControl, surface)) {
- mSurfaceControlSwapCount++;
- setBackpressureFlag = true;
- }
+ const bool setBackpressureFlag = !SurfaceControl::isSameSurface(mSurfaceControl, surface);
bool applyTransaction = false;
// Always update the native object even though they might have the same layer handle, so we can
@@ -401,19 +388,6 @@
std::unique_lock _lock{mMutex};
BQA_LOGV("releaseBufferCallback %s", id.to_string().c_str());
- const auto it = mFreedBuffers.find(id);
- if (it != mFreedBuffers.end()) {
- mFreedBuffers.erase(it);
- BQA_LOGV("releaseBufferCallback ignoring freed buffer %s", id.to_string().c_str());
- return;
- }
-
- if (mFreedBuffers.size() != 0 && mLogMissingReleaseCallback) {
- BQA_LOGD("Unexpected out of order buffer release. mFreedBuffer count=%d",
- static_cast<uint32_t>(mFreedBuffers.size()));
- mLogMissingReleaseCallback = false;
- }
-
// Calculate how many buffers we need to hold before we release them back
// to the buffer queue. This will prevent higher latency when we are running
// on a lower refresh rate than the max supported. We only do that for EGL
@@ -619,12 +593,6 @@
ATRACE_CALL();
std::unique_lock _lock{mMutex};
- if ((mSurfaceControlSwapCount > mProducerDisconnectCount) && mLogScSwap) {
- BQA_LOGD("Expected producer disconnect sc swap count=%d bq disconnect count=%d",
- mSurfaceControlSwapCount, mProducerDisconnectCount);
- mLogScSwap = false;
- }
-
const bool nextTransactionSet = mNextTransaction != nullptr;
BQA_LOGV("onFrameAvailable-start nextTransactionSet=%s", boolToString(nextTransactionSet));
if (nextTransactionSet) {
@@ -991,31 +959,4 @@
return mLastAcquiredFrameNumber;
}
-// When the producer disconnects, all buffers in the queue will be freed. So clean up the bbq
-// acquire state and handle any pending release callbacks. If we do get a release callback for a
-// pending buffer for a disconnected queue, we cannot release the buffer back to the queue. So track
-// these separately and drop the release callbacks as they come.
-
-// Transaction callbacks are still expected to come in the order they were submitted regardless of
-// buffer queue state. So we can continue to handles the pending transactions and transaction
-// complete callbacks. When the queue is reconnected, the queue will increment the framenumbers
-// starting from the last queued framenumber.
-void BLASTBufferQueue::onProducerDisconnect() {
- BQA_LOGV("onProducerDisconnect");
- std::scoped_lock _lock{mMutex};
- // reset counts since the queue has been disconnected and all buffers have been freed.
- mNumFrameAvailable = 0;
- mNumAcquired = 0;
-
- // Track submitted buffers in a different container so we can handle any pending release buffer
- // callbacks without affecting the BBQ acquire state.
- mFreedBuffers.insert(mSubmitted.begin(), mSubmitted.end());
- mSubmitted.clear();
- mPendingRelease.clear();
- mProducerDisconnectCount++;
- mCallbackCV.notify_all();
- mLogMissingReleaseCallback = true;
- mLogScSwap = true;
-}
-
} // namespace android