diff options
author | Gloria Wang <gwang@google.com> | 2011-02-07 11:41:11 -0800 |
---|---|---|
committer | Gloria Wang <gwang@google.com> | 2011-02-07 15:10:33 -0800 |
commit | 889b340ec736a9d3e3e690256d305cc8740f0c4b (patch) | |
tree | fab2bdfdc9621b051923b744065f8f0331b770c1 /media/libstagefright/FileSource.cpp | |
parent | 802da7bc462f6f9df6e681cc75c51dc0a056a4a1 (diff) | |
download | frameworks_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.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; } |