summaryrefslogtreecommitdiff
path: root/include/gui/BufferQueueProducer.h
diff options
context:
space:
mode:
author Dan Stoza <stoza@google.com> 2014-11-04 11:37:46 -0800
committer Dan Stoza <stoza@google.com> 2014-11-07 10:39:13 -0800
commit8dc55396fc9bc425b5e2c82e76a38080f2a655ff (patch)
tree36dfc0172e525db15531c9074a81096862287edf /include/gui/BufferQueueProducer.h
parent793fc0e13d25bdecda1219999f8be2cb3c121d20 (diff)
Add a BufferItem parameter to onFrameAvailable
Passes the BufferItem for the queued buffer to the onFrameAvailable callback so the consumer can track the BufferQueue's contents. Also adds an onFrameReplaced callback, which is necessary if the consumer wants to do anything more than simple queue length tracking. Bug: 18111837 Change-Id: If9d07229c9b586c668e5f99074e9b63b0468feb0
Diffstat (limited to 'include/gui/BufferQueueProducer.h')
-rw-r--r--include/gui/BufferQueueProducer.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/include/gui/BufferQueueProducer.h b/include/gui/BufferQueueProducer.h
index c619a111c7..ed1056a59d 100644
--- a/include/gui/BufferQueueProducer.h
+++ b/include/gui/BufferQueueProducer.h
@@ -203,6 +203,16 @@ private:
// since the previous buffer might have already been acquired.
sp<Fence> mLastQueueBufferFence;
+ // Take-a-ticket system for ensuring that onFrame* callbacks are called in
+ // the order that frames are queued. While the BufferQueue lock
+ // (mCore->mMutex) is held, a ticket is retained by the producer. After
+ // dropping the BufferQueue lock, the producer must wait on the condition
+ // variable until the current callback ticket matches its retained ticket.
+ Mutex mCallbackMutex;
+ int mNextCallbackTicket; // Protected by mCore->mMutex
+ int mCurrentCallbackTicket; // Protected by mCallbackMutex
+ Condition mCallbackCondition;
+
}; // class BufferQueueProducer
} // namespace android