From 2488b20aec097accb20a853d9876bb0a5dc04636 Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Fri, 20 Apr 2012 17:19:28 -0700 Subject: add a way to query whether an ANativeWindow consumer is running ahead of the producer Change-Id: Ibccfa1feb56db2ab11f0c0934ce2d570a2b65ae2 --- libs/gui/BufferQueue.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'libs/gui/BufferQueue.cpp') 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: -- cgit v1.2.3-59-g8ed1b