summaryrefslogtreecommitdiffstats
path: root/include/gui
diff options
context:
space:
mode:
authorDan Stoza <stoza@google.com>2015-04-24 16:33:37 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-04-24 16:33:37 +0000
commit7536ef4f07a3e8bfe227dbabe2298965af9d9e0e (patch)
treedc050e97cd411969df21610813c4984b79198ff2 /include/gui
parent8efa4fb3704ace5cd764203af9d23125e97b7bcd (diff)
parent437fb850b0667be3e8655cb1ac6a8d491f59d045 (diff)
downloadframeworks_native-7536ef4f07a3e8bfe227dbabe2298965af9d9e0e.zip
frameworks_native-7536ef4f07a3e8bfe227dbabe2298965af9d9e0e.tar.gz
frameworks_native-7536ef4f07a3e8bfe227dbabe2298965af9d9e0e.tar.bz2
am 437fb850: am f96a7581: am fb6d43ff: Merge "libgui: Change BufferQueue to use free lists"
* commit '437fb850b0667be3e8655cb1ac6a8d491f59d045': libgui: Change BufferQueue to use free lists
Diffstat (limited to 'include/gui')
-rw-r--r--include/gui/BufferQueueCore.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/include/gui/BufferQueueCore.h b/include/gui/BufferQueueCore.h
index 40026bd..a6065a9 100644
--- a/include/gui/BufferQueueCore.h
+++ b/include/gui/BufferQueueCore.h
@@ -30,6 +30,9 @@
#include <utils/Trace.h>
#include <utils/Vector.h>
+#include <list>
+#include <set>
+
#define BQ_LOGV(x, ...) ALOGV("[%s] " x, mConsumerName.string(), ##__VA_ARGS__)
#define BQ_LOGD(x, ...) ALOGD("[%s] " x, mConsumerName.string(), ##__VA_ARGS__)
#define BQ_LOGI(x, ...) ALOGI("[%s] " x, mConsumerName.string(), ##__VA_ARGS__)
@@ -123,6 +126,10 @@ private:
// waitWhileAllocatingLocked blocks until mIsAllocating is false.
void waitWhileAllocatingLocked() const;
+ // validateConsistencyLocked ensures that the free lists are in sync with
+ // the information stored in mSlots
+ void validateConsistencyLocked() const;
+
// mAllocator is the connection to SurfaceFlinger that is used to allocate
// new GraphicBuffer objects.
sp<IGraphicBufferAlloc> mAllocator;
@@ -177,6 +184,14 @@ private:
// mQueue is a FIFO of queued buffers used in synchronous mode.
Fifo mQueue;
+ // mFreeSlots contains all of the slots which are FREE and do not currently
+ // have a buffer attached
+ std::set<int> mFreeSlots;
+
+ // mFreeBuffers contains all of the slots which are FREE and currently have
+ // a buffer attached
+ std::list<int> mFreeBuffers;
+
// mOverrideMaxBufferCount is the limit on the number of buffers that will
// be allocated at one time. This value is set by the producer by calling
// setBufferCount. The default is 0, which means that the producer doesn't