diff options
Diffstat (limited to 'media/libmedia/IDrm.cpp')
-rw-r--r-- | media/libmedia/IDrm.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/media/libmedia/IDrm.cpp b/media/libmedia/IDrm.cpp index 1641b56..1578846 100644 --- a/media/libmedia/IDrm.cpp +++ b/media/libmedia/IDrm.cpp @@ -51,7 +51,8 @@ enum { ENCRYPT, DECRYPT, SIGN, - VERIFY + VERIFY, + SET_LISTENER }; struct BpDrm : public BpInterface<IDrm> { @@ -384,6 +385,14 @@ struct BpDrm : public BpInterface<IDrm> { return reply.readInt32(); } + virtual status_t setListener(const sp<IDrmClient>& listener) { + Parcel data, reply; + data.writeInterfaceToken(IDrm::getInterfaceDescriptor()); + data.writeStrongBinder(listener->asBinder()); + remote()->transact(SET_LISTENER, data, &reply); + return reply.readInt32(); + } + private: void readVector(Parcel &reply, Vector<uint8_t> &vector) const { uint32_t size = reply.readInt32(); @@ -712,6 +721,14 @@ status_t BnDrm::onTransact( return OK; } + case SET_LISTENER: { + CHECK_INTERFACE(IDrm, data, reply); + sp<IDrmClient> listener = + interface_cast<IDrmClient>(data.readStrongBinder()); + reply->writeInt32(setListener(listener)); + return NO_ERROR; + } break; + default: return BBinder::onTransact(code, data, reply, flags); } |