fix a bug when reallocating a window's buffers is needed

we need to mark the buffers that need to be reallocated,
NOT the buffer's indices.

Change-Id: I809e2e1b03b56c4d2ab983c25523dae99aa1da74
This commit is contained in:
Mathias Agopian 2010-05-21 14:51:33 -07:00
parent 5ed37d3343
commit a0b3f1d2eb
2 changed files with 3 additions and 2 deletions

View File

@ -303,6 +303,7 @@ private:
: mCapacity(c), mList(0) { }
status_t add(int value);
status_t remove(int value);
uint32_t getMask() const { return mList; }
class const_iterator {
friend class BufferList;

View File

@ -440,7 +440,7 @@ status_t SharedBufferClient::queue(int buf)
bool SharedBufferClient::needNewBuffer(int buf) const
{
SharedBufferStack& stack( *mSharedStack );
const uint32_t mask = 1<<buf;
const uint32_t mask = 1<<(31-buf);
return (android_atomic_and(~mask, &stack.reallocMask) & mask) != 0;
}
@ -532,7 +532,7 @@ status_t SharedBufferServer::reallocate()
RWLock::AutoRLock _l(mLock);
SharedBufferStack& stack( *mSharedStack );
uint32_t mask = (1<<mNumBuffers)-1;
uint32_t mask = mBufferList.getMask();
android_atomic_or(mask, &stack.reallocMask);
return NO_ERROR;
}