diff options
author | Jamie Gennis <jgennis@google.com> | 2012-09-04 14:58:50 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-09-04 14:58:51 -0700 |
commit | 493db47929cdd805339e453062fef265d8985692 (patch) | |
tree | d2d53c5b5942fd866324cb234430b8db3a1296e5 /libs | |
parent | e84ec393bb48e4817eaa280ee51c099af041b14c (diff) | |
parent | c68f2ecfa02037144d1a3856f637a77f523cf416 (diff) | |
download | frameworks_native-493db47929cdd805339e453062fef265d8985692.zip frameworks_native-493db47929cdd805339e453062fef265d8985692.tar.gz frameworks_native-493db47929cdd805339e453062fef265d8985692.tar.bz2 |
Merge "BufferQueue: add a setMaxAcquiredBufferCount check" into jb-mr1-dev
Diffstat (limited to 'libs')
-rw-r--r-- | libs/gui/BufferQueue.cpp | 5 | ||||
-rw-r--r-- | libs/gui/tests/BufferQueue_test.cpp | 21 |
2 files changed, 26 insertions, 0 deletions
diff --git a/libs/gui/BufferQueue.cpp b/libs/gui/BufferQueue.cpp index 4640149..2eee6f5 100644 --- a/libs/gui/BufferQueue.cpp +++ b/libs/gui/BufferQueue.cpp @@ -974,6 +974,11 @@ status_t BufferQueue::setDefaultMaxBufferCount(int bufferCount) { status_t BufferQueue::setMaxAcquiredBufferCount(int maxAcquiredBuffers) { ATRACE_CALL(); Mutex::Autolock lock(mMutex); + if (maxAcquiredBuffers < 1 || maxAcquiredBuffers > MAX_MAX_ACQUIRED_BUFFERS) { + ST_LOGE("setMaxAcquiredBufferCount: invalid count specified: %d", + maxAcquiredBuffers); + return BAD_VALUE; + } if (mConnectedApi != NO_CONNECTED_API) { return INVALID_OPERATION; } diff --git a/libs/gui/tests/BufferQueue_test.cpp b/libs/gui/tests/BufferQueue_test.cpp index 8601789..817abb4 100644 --- a/libs/gui/tests/BufferQueue_test.cpp +++ b/libs/gui/tests/BufferQueue_test.cpp @@ -93,4 +93,25 @@ TEST_F(BufferQueueTest, AcquireBuffer_ExceedsMaxAcquireCount_Fails) { ASSERT_EQ(INVALID_OPERATION, mBQ->acquireBuffer(&item)); } +TEST_F(BufferQueueTest, SetMaxAcquiredBufferCountWithIllegalValues_ReturnsError) { + sp<DummyConsumer> dc(new DummyConsumer); + mBQ->consumerConnect(dc); + + ASSERT_EQ(BAD_VALUE, mBQ->setMaxAcquiredBufferCount(0)); + ASSERT_EQ(BAD_VALUE, mBQ->setMaxAcquiredBufferCount(-3)); + ASSERT_EQ(BAD_VALUE, mBQ->setMaxAcquiredBufferCount( + BufferQueue::MAX_MAX_ACQUIRED_BUFFERS+1)); + ASSERT_EQ(BAD_VALUE, mBQ->setMaxAcquiredBufferCount(100)); +} + +TEST_F(BufferQueueTest, SetMaxAcquiredBufferCountWithLegalValues_Succeeds) { + sp<DummyConsumer> dc(new DummyConsumer); + mBQ->consumerConnect(dc); + + ASSERT_EQ(OK, mBQ->setMaxAcquiredBufferCount(1)); + ASSERT_EQ(OK, mBQ->setMaxAcquiredBufferCount(2)); + ASSERT_EQ(OK, mBQ->setMaxAcquiredBufferCount( + BufferQueue::MAX_MAX_ACQUIRED_BUFFERS)); +} + } // namespace android |