BQ: Prevent operations on disconnected BQs
- Update unit tests to match
Bug 23763412
Change-Id: I77e59bf6b57b328433c3835450455f80a8fa454b
diff --git a/libs/gui/IGraphicBufferProducer.cpp b/libs/gui/IGraphicBufferProducer.cpp
index 6495aa9..3cdcd79 100644
--- a/libs/gui/IGraphicBufferProducer.cpp
+++ b/libs/gui/IGraphicBufferProducer.cpp
@@ -206,12 +206,17 @@
return result;
}
- virtual void cancelBuffer(int buf, const sp<Fence>& fence) {
+ virtual status_t cancelBuffer(int buf, const sp<Fence>& fence) {
Parcel data, reply;
data.writeInterfaceToken(IGraphicBufferProducer::getInterfaceDescriptor());
data.writeInt32(buf);
data.write(*fence.get());
- remote()->transact(CANCEL_BUFFER, data, &reply);
+ status_t result = remote()->transact(CANCEL_BUFFER, data, &reply);
+ if (result != NO_ERROR) {
+ return result;
+ }
+ result = reply.readInt32();
+ return result;
}
virtual int query(int what, int* value) {
@@ -434,7 +439,8 @@
int buf = data.readInt32();
sp<Fence> fence = new Fence();
data.read(*fence.get());
- cancelBuffer(buf, fence);
+ status_t result = cancelBuffer(buf, fence);
+ reply->writeInt32(result);
return NO_ERROR;
}
case QUERY: {