summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2017-06-01 23:43:55 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2017-06-01 23:43:59 +0000
commit6890dc95d02f85647179f2c32ec4d9691aaed472 (patch)
tree5cc98a264be42a2535b56d73e9f6527bec4c5eb3
parent6797a20a863f4a420809c30c4bea9a69efa470e2 (diff)
parenta67b62e15e20bac6a9664e6e6be923cf82ad4138 (diff)
Merge "Fix ANR & Crash on Ryu" into oc-dev
-rw-r--r--core/jni/android_view_ThreadedRenderer.cpp3
-rw-r--r--libs/hwui/renderthread/CanvasContext.cpp4
2 files changed, 4 insertions, 3 deletions
diff --git a/core/jni/android_view_ThreadedRenderer.cpp b/core/jni/android_view_ThreadedRenderer.cpp
index 192e3bb7028f..8c28cc94880a 100644
--- a/core/jni/android_view_ThreadedRenderer.cpp
+++ b/core/jni/android_view_ThreadedRenderer.cpp
@@ -877,7 +877,8 @@ static jobject android_view_ThreadedRenderer_createHardwareBitmapFromRenderNode(
sp<IGraphicBufferProducer> producer;
sp<IGraphicBufferConsumer> rawConsumer;
BufferQueue::createBufferQueue(&producer, &rawConsumer);
- rawConsumer->setMaxBufferCount(1);
+ // We only need 1 buffer but some drivers have bugs so workaround it by setting max count to 2
+ rawConsumer->setMaxBufferCount(2);
sp<BufferItemConsumer> consumer = new BufferItemConsumer(rawConsumer,
GRALLOC_USAGE_HW_TEXTURE | GRALLOC_USAGE_SW_READ_NEVER | GRALLOC_USAGE_SW_WRITE_NEVER);
consumer->setDefaultBufferSize(width, height);
diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp
index cbc5163244c1..9c80ab304b80 100644
--- a/libs/hwui/renderthread/CanvasContext.cpp
+++ b/libs/hwui/renderthread/CanvasContext.cpp
@@ -437,8 +437,8 @@ void CanvasContext::draw() {
if (mNativeSurface.get()) {
int durationUs;
nsecs_t dequeueStart = mNativeSurface->getLastDequeueStartTime();
- if (dequeueStart < mCurrentFrameInfo->get(FrameInfoIndex::Vsync)) {
- // Ignoring dequeue duration as it happened prior to vsync
+ if (dequeueStart < mCurrentFrameInfo->get(FrameInfoIndex::SyncStart)) {
+ // Ignoring dequeue duration as it happened prior to frame render start
// and thus is not part of the frame.
swap.dequeueDuration = 0;
} else {