diff options
| author | 2016-07-12 02:42:52 +0000 | |
|---|---|---|
| committer | 2016-07-12 02:42:52 +0000 | |
| commit | fc99724135597eb8cfe7181acc323e2fe5a121da (patch) | |
| tree | 54d909e053119a648e9939f4c595a84e850984ae | |
| parent | 9e54475df881b07401e35e8b08f90b61772d60d9 (diff) | |
| parent | bcfff94dba652484a702deb0b193ff6e4ecfc641 (diff) | |
Merge \\"BQ: Handle errors in GraphicBuffer/Fence unflatten\\" into nyc-mr1-dev am: 20854e608f
am: bcfff94dba
Change-Id: I0c0e197c3b832a366ed1e7b986f08e244e8392b5
| -rw-r--r-- | libs/gui/IGraphicBufferProducer.cpp | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/libs/gui/IGraphicBufferProducer.cpp b/libs/gui/IGraphicBufferProducer.cpp index 2e013f1f9f..57fba732d6 100644 --- a/libs/gui/IGraphicBufferProducer.cpp +++ b/libs/gui/IGraphicBufferProducer.cpp @@ -134,7 +134,11 @@ public: bool nonNull = reply.readInt32(); if (nonNull) { *fence = new Fence(); - reply.read(**fence); + result = reply.read(**fence); + if (result != NO_ERROR) { + fence->clear(); + return result; + } } result = reply.readInt32(); return result; @@ -172,12 +176,21 @@ public: bool nonNull = reply.readInt32(); if (nonNull) { *outBuffer = new GraphicBuffer; - reply.read(**outBuffer); + result = reply.read(**outBuffer); + if (result != NO_ERROR) { + outBuffer->clear(); + return result; + } } nonNull = reply.readInt32(); if (nonNull) { *outFence = new Fence; - reply.read(**outFence); + result = reply.read(**outFence); + if (result != NO_ERROR) { + outBuffer->clear(); + outFence->clear(); + return result; + } } } return result; @@ -561,9 +574,11 @@ status_t BnGraphicBufferProducer::onTransact( case ATTACH_BUFFER: { CHECK_INTERFACE(IGraphicBufferProducer, data, reply); sp<GraphicBuffer> buffer = new GraphicBuffer(); - data.read(*buffer.get()); + status_t result = data.read(*buffer.get()); int slot = 0; - int result = attachBuffer(&slot, buffer); + if (result == NO_ERROR) { + result = attachBuffer(&slot, buffer); + } reply->writeInt32(slot); reply->writeInt32(result); return NO_ERROR; @@ -584,8 +599,10 @@ status_t BnGraphicBufferProducer::onTransact( CHECK_INTERFACE(IGraphicBufferProducer, data, reply); int buf = data.readInt32(); sp<Fence> fence = new Fence(); - data.read(*fence.get()); - status_t result = cancelBuffer(buf, fence); + status_t result = data.read(*fence.get()); + if (result == NO_ERROR) { + result = cancelBuffer(buf, fence); + } reply->writeInt32(result); return NO_ERROR; } |