summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/FileSource.cpp
diff options
context:
space:
mode:
authorGloria Wang <gwang@google.com>2011-02-07 11:41:11 -0800
committerGloria Wang <gwang@google.com>2011-02-07 15:10:33 -0800
commit889b340ec736a9d3e3e690256d305cc8740f0c4b (patch)
treefab2bdfdc9621b051923b744065f8f0331b770c1 /media/libstagefright/FileSource.cpp
parent802da7bc462f6f9df6e681cc75c51dc0a056a4a1 (diff)
downloadframeworks_av-889b340ec736a9d3e3e690256d305cc8740f0c4b.zip
frameworks_av-889b340ec736a9d3e3e690256d305cc8740f0c4b.tar.gz
frameworks_av-889b340ec736a9d3e3e690256d305cc8740f0c4b.tar.bz2
- Do not use global DrmManagerClient
- Release the DrmManagerClient and DecryptHandle in DataSource Fix for bug 3429811 Change-Id: I549f72b75225751877eb0e630ce8098f8ec6316f
Diffstat (limited to 'media/libstagefright/FileSource.cpp')
-rw-r--r--media/libstagefright/FileSource.cpp21
1 files changed, 18 insertions, 3 deletions
diff --git a/media/libstagefright/FileSource.cpp b/media/libstagefright/FileSource.cpp
index 98d5b50..b8e75fd 100644
--- a/media/libstagefright/FileSource.cpp
+++ b/media/libstagefright/FileSource.cpp
@@ -60,6 +60,17 @@ FileSource::~FileSource() {
delete[] mDrmBuf;
mDrmBuf = NULL;
}
+
+ if (mDecryptHandle != NULL) {
+ // To release mDecryptHandle
+ mDrmManagerClient->closeDecryptSession(mDecryptHandle);
+ mDecryptHandle = NULL;
+ }
+
+ if (mDrmManagerClient != NULL) {
+ delete mDrmManagerClient;
+ mDrmManagerClient = NULL;
+ }
}
status_t FileSource::initCheck() const {
@@ -113,11 +124,14 @@ status_t FileSource::getSize(off64_t *size) {
return OK;
}
-DecryptHandle* FileSource::DrmInitialization(DrmManagerClient* client) {
- if (client == NULL) {
+DecryptHandle* FileSource::DrmInitialization() {
+ if (mDrmManagerClient == NULL) {
+ mDrmManagerClient = new DrmManagerClient();
+ }
+
+ if (mDrmManagerClient == NULL) {
return NULL;
}
- mDrmManagerClient = client;
if (mDecryptHandle == NULL) {
mDecryptHandle = mDrmManagerClient->openDecryptSession(
@@ -125,6 +139,7 @@ DecryptHandle* FileSource::DrmInitialization(DrmManagerClient* client) {
}
if (mDecryptHandle == NULL) {
+ delete mDrmManagerClient;
mDrmManagerClient = NULL;
}