summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice/HDCP.cpp
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2012-09-27 14:13:05 -0700
committerAndreas Huber <andih@google.com>2012-09-27 14:25:18 -0700
commitef7d3793fa9bbfb25253626ede9a020ee9280a17 (patch)
tree294e3f0459595612c4b7ae4865e396147ebb0754 /media/libmediaplayerservice/HDCP.cpp
parente399acc9d9f3b7af72106c4209e4bb40de37aa6a (diff)
downloadframeworks_av-ef7d3793fa9bbfb25253626ede9a020ee9280a17.zip
frameworks_av-ef7d3793fa9bbfb25253626ede9a020ee9280a17.tar.gz
frameworks_av-ef7d3793fa9bbfb25253626ede9a020ee9280a17.tar.bz2
Cleaner Wifi Display shutdown process, avoid crashing HDCP on exit.
Change-Id: Ie54ee3edd672ec629360b4ecc5df2f85ecbaa45f related-to-bug: 7247584
Diffstat (limited to 'media/libmediaplayerservice/HDCP.cpp')
-rw-r--r--media/libmediaplayerservice/HDCP.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/media/libmediaplayerservice/HDCP.cpp b/media/libmediaplayerservice/HDCP.cpp
index e7dea6e..09b9719 100644
--- a/media/libmediaplayerservice/HDCP.cpp
+++ b/media/libmediaplayerservice/HDCP.cpp
@@ -51,6 +51,8 @@ HDCP::HDCP()
}
HDCP::~HDCP() {
+ Mutex::Autolock autoLock(mLock);
+
if (mHDCPModule != NULL) {
delete mHDCPModule;
mHDCPModule = NULL;
@@ -63,6 +65,8 @@ HDCP::~HDCP() {
}
status_t HDCP::setObserver(const sp<IHDCPObserver> &observer) {
+ Mutex::Autolock autoLock(mLock);
+
if (mHDCPModule == NULL) {
return NO_INIT;
}
@@ -73,6 +77,8 @@ status_t HDCP::setObserver(const sp<IHDCPObserver> &observer) {
}
status_t HDCP::initAsync(const char *host, unsigned port) {
+ Mutex::Autolock autoLock(mLock);
+
if (mHDCPModule == NULL) {
return NO_INIT;
}
@@ -81,6 +87,8 @@ status_t HDCP::initAsync(const char *host, unsigned port) {
}
status_t HDCP::shutdownAsync() {
+ Mutex::Autolock autoLock(mLock);
+
if (mHDCPModule == NULL) {
return NO_INIT;
}
@@ -91,6 +99,8 @@ status_t HDCP::shutdownAsync() {
status_t HDCP::encrypt(
const void *inData, size_t size, uint32_t streamCTR,
uint64_t *outInputCTR, void *outData) {
+ Mutex::Autolock autoLock(mLock);
+
if (mHDCPModule == NULL) {
*outInputCTR = 0;
@@ -106,6 +116,8 @@ void HDCP::ObserveWrapper(void *me, int msg, int ext1, int ext2) {
}
void HDCP::observe(int msg, int ext1, int ext2) {
+ Mutex::Autolock autoLock(mLock);
+
if (mObserver != NULL) {
mObserver->notify(msg, ext1, ext2, NULL /* obj */);
}