diff options
Diffstat (limited to 'libs/gui/IGraphicBufferProducer.cpp')
-rw-r--r-- | libs/gui/IGraphicBufferProducer.cpp | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/libs/gui/IGraphicBufferProducer.cpp b/libs/gui/IGraphicBufferProducer.cpp index 640a9f2136..d5310bdccd 100644 --- a/libs/gui/IGraphicBufferProducer.cpp +++ b/libs/gui/IGraphicBufferProducer.cpp @@ -50,7 +50,8 @@ enum { GET_CONSUMER_NAME, SET_MAX_DEQUEUED_BUFFER_COUNT, SET_ASYNC_MODE, - GET_NEXT_FRAME_NUMBER + GET_NEXT_FRAME_NUMBER, + SET_SINGLE_BUFFER_MODE }; class BpGraphicBufferProducer : public BpInterface<IGraphicBufferProducer> @@ -339,6 +340,19 @@ public: uint64_t frameNumber = reply.readUint64(); return frameNumber; } + + virtual status_t setSingleBufferMode(bool singleBufferMode) { + Parcel data, reply; + data.writeInterfaceToken( + IGraphicBufferProducer::getInterfaceDescriptor()); + data.writeInt32(singleBufferMode); + status_t result = remote()->transact(SET_SINGLE_BUFFER_MODE, data, + &reply); + if (result == NO_ERROR) { + result = reply.readInt32(); + } + return result; + } }; // Out-of-line virtual method definition to trigger vtable emission in this @@ -527,6 +541,13 @@ status_t BnGraphicBufferProducer::onTransact( reply->writeUint64(frameNumber); return NO_ERROR; } + case SET_SINGLE_BUFFER_MODE: { + CHECK_INTERFACE(IGraphicBufferProducer, data, reply); + bool singleBufferMode = data.readInt32(); + status_t result = setSingleBufferMode(singleBufferMode); + reply->writeInt32(result); + return NO_ERROR; + } } return BBinder::onTransact(code, data, reply, flags); } |