diff options
| author | 2012-04-20 17:19:28 -0700 | |
|---|---|---|
| committer | 2012-04-23 20:06:02 -0700 | |
| commit | 2488b20aec097accb20a853d9876bb0a5dc04636 (patch) | |
| tree | 56766085934db536118db60a85b7fadd94f99be6 /libs/gui/BufferQueue.cpp | |
| parent | 24202f5676c32edeef6544cf36e06b9fc970dbde (diff) | |
add a way to query whether an ANativeWindow consumer is running ahead of the producer
Change-Id: Ibccfa1feb56db2ab11f0c0934ce2d570a2b65ae2
Diffstat (limited to 'libs/gui/BufferQueue.cpp')
| -rw-r--r-- | libs/gui/BufferQueue.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/libs/gui/BufferQueue.cpp b/libs/gui/BufferQueue.cpp index 5941dc287f..39e9724f25 100644 --- a/libs/gui/BufferQueue.cpp +++ b/libs/gui/BufferQueue.cpp @@ -252,6 +252,9 @@ int BufferQueue::query(int what, int* outValue) value = mSynchronousMode ? (mMinUndequeuedBuffers-1) : mMinUndequeuedBuffers; break; + case NATIVE_WINDOW_CONSUMER_RUNNING_BEHIND: + value = (mQueue.size() >= 2); + break; default: return BAD_VALUE; } @@ -615,7 +618,8 @@ status_t BufferQueue::queueBuffer(int buf, mBufferHasBeenQueued = true; mDequeueCondition.broadcast(); - output->inflate(mDefaultWidth, mDefaultHeight, mTransformHint); + output->inflate(mDefaultWidth, mDefaultHeight, mTransformHint, + mQueue.size()); ATRACE_INT(mConsumerName.string(), mQueue.size()); } // scope for the lock @@ -678,7 +682,8 @@ status_t BufferQueue::connect(int api, QueueBufferOutput* output) { err = -EINVAL; } else { mConnectedApi = api; - output->inflate(mDefaultWidth, mDefaultHeight, mDefaultHeight); + output->inflate(mDefaultWidth, mDefaultHeight, mTransformHint, + mQueue.size()); } break; default: |