OSDN Git Service

Surface: cancel the dequeued buffer when requestBuffer fails
authorJesse Hall <jessehall@google.com>
Thu, 2 Oct 2014 18:09:03 +0000 (11:09 -0700)
committerJesse Hall <jessehall@google.com>
Thu, 2 Oct 2014 18:16:19 +0000 (18:16 +0000)
Partial fix for bug: 17477219
Change-Id: Ibf5a9e26e02c4be8854925a77a70f5c9c7dcf6f2

libs/gui/Surface.cpp

index b56030e..0e2baa2 100644 (file)
@@ -237,6 +237,7 @@ int Surface::dequeueBuffer(android_native_buffer_t** buffer, int* fenceFd) {
         result = mGraphicBufferProducer->requestBuffer(buf, &gbuf);
         if (result != NO_ERROR) {
             ALOGE("dequeueBuffer: IGraphicBufferProducer::requestBuffer failed: %d", result);
+            mGraphicBufferProducer->cancelBuffer(buf, fence);
             return result;
         }
     }