diff options
author | Jeff Tinker <jtinker@google.com> | 2013-04-02 13:08:05 -0700 |
---|---|---|
committer | Jeff Tinker <jtinker@google.com> | 2013-04-03 12:20:53 -0700 |
commit | c0d5f1f8405de861ed6f1725f26cd6601e7103ab (patch) | |
tree | 710d03a7ee6541642c1dc16ac82b4ffea3903968 /media/libmedia/IDrm.cpp | |
parent | 4c63a239c404af1e055e5f9939939ab0fd09d98a (diff) | |
download | frameworks_av-c0d5f1f8405de861ed6f1725f26cd6601e7103ab.zip frameworks_av-c0d5f1f8405de861ed6f1725f26cd6601e7103ab.tar.gz frameworks_av-c0d5f1f8405de861ed6f1725f26cd6601e7103ab.tar.bz2 |
Implement async event callout from drm plugin to Java app
Change-Id: I007f147d693664e777b8758be2bb8a4c7ec0236b
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); } |