diff options
| author | 2017-06-01 23:43:55 +0000 | |
|---|---|---|
| committer | 2017-06-01 23:43:59 +0000 | |
| commit | 6890dc95d02f85647179f2c32ec4d9691aaed472 (patch) | |
| tree | 5cc98a264be42a2535b56d73e9f6527bec4c5eb3 | |
| parent | 6797a20a863f4a420809c30c4bea9a69efa470e2 (diff) | |
| parent | a67b62e15e20bac6a9664e6e6be923cf82ad4138 (diff) | |
Merge "Fix ANR & Crash on Ryu" into oc-dev
| -rw-r--r-- | core/jni/android_view_ThreadedRenderer.cpp | 3 | ||||
| -rw-r--r-- | libs/hwui/renderthread/CanvasContext.cpp | 4 |
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 { |