am 72c3f7d8
: Revert "ConsumerBase: free buffers outside the lock"
* commit '72c3f7d88160b7c279f90f0efe3c1cb12cd140ae': Revert "ConsumerBase: free buffers outside the lock"
This commit is contained in:
commit
d4e706208c
@ -109,9 +109,6 @@ void ConsumerBase::onFrameAvailable() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ConsumerBase::onBuffersReleased() {
|
void ConsumerBase::onBuffersReleased() {
|
||||||
sp<GraphicBuffer> bufRefs[BufferQueue::NUM_BUFFER_SLOTS];
|
|
||||||
|
|
||||||
{ // Scope for the lock
|
|
||||||
Mutex::Autolock lock(mMutex);
|
Mutex::Autolock lock(mMutex);
|
||||||
|
|
||||||
CB_LOGV("onBuffersReleased");
|
CB_LOGV("onBuffersReleased");
|
||||||
@ -125,22 +122,11 @@ void ConsumerBase::onBuffersReleased() {
|
|||||||
mBufferQueue->getReleasedBuffers(&mask);
|
mBufferQueue->getReleasedBuffers(&mask);
|
||||||
for (int i = 0; i < BufferQueue::NUM_BUFFER_SLOTS; i++) {
|
for (int i = 0; i < BufferQueue::NUM_BUFFER_SLOTS; i++) {
|
||||||
if (mask & (1 << i)) {
|
if (mask & (1 << i)) {
|
||||||
// Grab a local reference to the buffers so that they don't
|
|
||||||
// get freed while the lock is held.
|
|
||||||
bufRefs[i] = mSlots[i].mGraphicBuffer;
|
|
||||||
|
|
||||||
freeBufferLocked(i);
|
freeBufferLocked(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Clear the local buffer references. This would happen automatically
|
|
||||||
// when the array gets dtor'd, but I'm doing it explicitly for clarity.
|
|
||||||
for (int i = 0; i < BufferQueue::NUM_BUFFER_SLOTS; i++) {
|
|
||||||
bufRefs[i].clear();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ConsumerBase::abandon() {
|
void ConsumerBase::abandon() {
|
||||||
CB_LOGV("abandon");
|
CB_LOGV("abandon");
|
||||||
Mutex::Autolock lock(mMutex);
|
Mutex::Autolock lock(mMutex);
|
||||||
|
Loading…
Reference in New Issue
Block a user