diff options
author | Jeff Tinker <jtinker@google.com> | 2013-07-03 15:38:58 -0700 |
---|---|---|
committer | Jeff Tinker <jtinker@google.com> | 2013-07-03 16:23:39 -0700 |
commit | 3d3f67f3afa45e6b49d85b20942ee8184a33c1a4 (patch) | |
tree | ecf87485ed6235279de2022c056c0f370b2af8d5 /media/libmediaplayerservice/Drm.cpp | |
parent | a691ff3c03e38e148bbefed35ebb15e552a12613 (diff) | |
download | frameworks_av-3d3f67f3afa45e6b49d85b20942ee8184a33c1a4.zip frameworks_av-3d3f67f3afa45e6b49d85b20942ee8184a33c1a4.tar.gz frameworks_av-3d3f67f3afa45e6b49d85b20942ee8184a33c1a4.tar.bz2 |
Part of fix for TEE resource leaks when app crashes
bug: 9672606
Change-Id: I98cf65260d5e43d34e3897452f6f26ed2c89294e
Diffstat (limited to 'media/libmediaplayerservice/Drm.cpp')
-rw-r--r-- | media/libmediaplayerservice/Drm.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/media/libmediaplayerservice/Drm.cpp b/media/libmediaplayerservice/Drm.cpp index 1e6cd94..f00f488 100644 --- a/media/libmediaplayerservice/Drm.cpp +++ b/media/libmediaplayerservice/Drm.cpp @@ -71,6 +71,12 @@ status_t Drm::initCheck() const { status_t Drm::setListener(const sp<IDrmClient>& listener) { Mutex::Autolock lock(mEventLock); + if (mListener != NULL){ + mListener->asBinder()->unlinkToDeath(this); + } + if (listener != NULL) { + listener->asBinder()->linkToDeath(this); + } mListener = listener; return NO_ERROR; } @@ -576,4 +582,12 @@ status_t Drm::verify(Vector<uint8_t> const &sessionId, return mPlugin->verify(sessionId, keyId, message, signature, match); } +void Drm::binderDied(const wp<IBinder> &the_late_who) +{ + delete mPlugin; + mPlugin = NULL; + closeFactory(); + mListener.clear(); +} + } // namespace android |