summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice/Drm.cpp
diff options
context:
space:
mode:
authorJeff Tinker <jtinker@google.com>2013-07-03 15:38:58 -0700
committerJeff Tinker <jtinker@google.com>2013-07-03 16:23:39 -0700
commit3d3f67f3afa45e6b49d85b20942ee8184a33c1a4 (patch)
treeecf87485ed6235279de2022c056c0f370b2af8d5 /media/libmediaplayerservice/Drm.cpp
parenta691ff3c03e38e148bbefed35ebb15e552a12613 (diff)
downloadframeworks_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.cpp14
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