summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Stoza <stoza@google.com>2015-12-08 17:05:25 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2015-12-08 17:05:25 +0000
commit789ede379d2f19ce284866c72bcaad7e8255b1cc (patch)
tree9958f29687283229142a60bb7bff42d39c6b53c0
parent18ff6557667f3d130ad1f83e04f3b175f8b8cf6d (diff)
parent82fbb121763e16dcf58fb2a3e65d2f93543d9078 (diff)
downloadnative-789ede379d2f19ce284866c72bcaad7e8255b1cc.tar.gz
Merge "Fix the execution point of onFrameAvailable/onFrameReplaced callbacks"
-rw-r--r--libs/gui/BufferQueueProducer.cpp18
1 files changed, 9 insertions, 9 deletions
diff --git a/libs/gui/BufferQueueProducer.cpp b/libs/gui/BufferQueueProducer.cpp
index 87e5b4d279..a941e2d29a 100644
--- a/libs/gui/BufferQueueProducer.cpp
+++ b/libs/gui/BufferQueueProducer.cpp
@@ -696,15 +696,6 @@ status_t BufferQueueProducer::queueBuffer(int slot,
mCore->validateConsistencyLocked();
} // Autolock scope
- // Wait without lock held
- if (mCore->mConnectedApi == NATIVE_WINDOW_API_EGL) {
- // Waiting here allows for two full buffers to be queued but not a
- // third. In the event that frames take varying time, this makes a
- // small trade-off in favor of latency rather than throughput.
- mLastQueueBufferFence->waitForever("Throttling EGL Production");
- mLastQueueBufferFence = fence;
- }
-
// Don't send the GraphicBuffer through the callback, and don't send
// the slot number, since the consumer shouldn't need it
item.mGraphicBuffer.clear();
@@ -728,6 +719,15 @@ status_t BufferQueueProducer::queueBuffer(int slot,
mCallbackCondition.broadcast();
}
+ // Wait without lock held
+ if (mCore->mConnectedApi == NATIVE_WINDOW_API_EGL) {
+ // Waiting here allows for two full buffers to be queued but not a
+ // third. In the event that frames take varying time, this makes a
+ // small trade-off in favor of latency rather than throughput.
+ mLastQueueBufferFence->waitForever("Throttling EGL Production");
+ mLastQueueBufferFence = fence;
+ }
+
return NO_ERROR;
}