diff options
| author | 2016-01-13 17:09:58 -0800 | |
|---|---|---|
| committer | 2016-02-09 17:16:33 -0800 | |
| commit | ff95aabbcc6e8606acbd7933c90eeb9b8b382a21 (patch) | |
| tree | cd7690fdf21486139cfff232c6ce09132d18a05b /libs/gui/BufferQueueProducer.cpp | |
| parent | c5cec281654c5dee2273ce4bebd3a749c3a1119e (diff) | |
Add interface for controlling single buffer auto refresh
- Adds a boolean to BufferQueue that controls whether or not auto
refresh is enabled in SurfaceFlinger when in single buffer mode.
- Adds plumbing up to ANativeWindow.
- When enabled, it will cache the shared buffer slot in Surface in
order to prevent the Binder transaction with SurfaceFlinger.
Bug 24940410
Change-Id: I83142afdc00e203f198a32288f071d926f8fda95
Diffstat (limited to 'libs/gui/BufferQueueProducer.cpp')
| -rw-r--r-- | libs/gui/BufferQueueProducer.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/libs/gui/BufferQueueProducer.cpp b/libs/gui/BufferQueueProducer.cpp index 9d4246482c..e065e6151d 100644 --- a/libs/gui/BufferQueueProducer.cpp +++ b/libs/gui/BufferQueueProducer.cpp @@ -806,8 +806,8 @@ status_t BufferQueueProducer::queueBuffer(int slot, mCore->mDequeueBufferCannotBlock || (mCore->mSingleBufferMode && mCore->mSingleBufferSlot == slot); item.mSurfaceDamage = surfaceDamage; - item.mSingleBufferMode = mCore->mSingleBufferMode; item.mQueuedBuffer = true; + item.mAutoRefresh = mCore->mSingleBufferMode && mCore->mAutoRefresh; mStickyTransform = stickyTransform; @@ -1309,6 +1309,16 @@ status_t BufferQueueProducer::setSingleBufferMode(bool singleBufferMode) { return NO_ERROR; } +status_t BufferQueueProducer::setAutoRefresh(bool autoRefresh) { + ATRACE_CALL(); + BQ_LOGV("setAutoRefresh: %d", autoRefresh); + + Mutex::Autolock lock(mCore->mMutex); + + mCore->mAutoRefresh = autoRefresh; + return NO_ERROR; +} + status_t BufferQueueProducer::setDequeueTimeout(nsecs_t timeout) { ATRACE_CALL(); BQ_LOGV("setDequeueTimeout: %" PRId64, timeout); |