summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2010-05-24 18:31:59 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2010-05-24 18:31:59 -0700
commit27d2f0caef5aae33aed4675e28cfdd8374b23e3f (patch)
tree86dbe565b168f9a6a2d6cc656adf9613c5459542
parent49551ca41e5bdd15bce9908860a8dcf683da5b21 (diff)
parentacdc44bbbaa43fc46328abbf5bea7c46a993d62f (diff)
downloadframeworks_base-27d2f0caef5aae33aed4675e28cfdd8374b23e3f.zip
frameworks_base-27d2f0caef5aae33aed4675e28cfdd8374b23e3f.tar.gz
frameworks_base-27d2f0caef5aae33aed4675e28cfdd8374b23e3f.tar.bz2
am acdc44bb: Merge "fix a bug when reallocating a window\'s buffers is needed" into kraken
-rw-r--r--include/private/surfaceflinger/SharedBufferStack.h1
-rw-r--r--libs/surfaceflinger_client/SharedBufferStack.cpp4
2 files changed, 3 insertions, 2 deletions
diff --git a/include/private/surfaceflinger/SharedBufferStack.h b/include/private/surfaceflinger/SharedBufferStack.h
index c3ac317..de54870 100644
--- a/include/private/surfaceflinger/SharedBufferStack.h
+++ b/include/private/surfaceflinger/SharedBufferStack.h
@@ -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;
diff --git a/libs/surfaceflinger_client/SharedBufferStack.cpp b/libs/surfaceflinger_client/SharedBufferStack.cpp
index e2e1591..8681b59 100644
--- a/libs/surfaceflinger_client/SharedBufferStack.cpp
+++ b/libs/surfaceflinger_client/SharedBufferStack.cpp
@@ -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;
}