diff options
author | Gloria Wang <gwang@google.com> | 2011-02-08 11:16:27 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-02-08 11:16:27 -0800 |
commit | b93d55d9f6e154629d47270970e0a0ace5a1b0a0 (patch) | |
tree | 4688ebaf105f5b3d211650b1b39a0bb32de2b769 /media/libstagefright/FileSource.cpp | |
parent | 8473bb556421ac08f4e03abd5d149852114c9238 (diff) | |
parent | 889b340ec736a9d3e3e690256d305cc8740f0c4b (diff) | |
download | frameworks_av-b93d55d9f6e154629d47270970e0a0ace5a1b0a0.zip frameworks_av-b93d55d9f6e154629d47270970e0a0ace5a1b0a0.tar.gz frameworks_av-b93d55d9f6e154629d47270970e0a0ace5a1b0a0.tar.bz2 |
Merge "- Do not use global DrmManagerClient - Release the DrmManagerClient and DecryptHandle in DataSource Fix for bug 3429811"
Diffstat (limited to 'media/libstagefright/FileSource.cpp')
-rw-r--r-- | media/libstagefright/FileSource.cpp | 21 |
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; } |