From ef7d3793fa9bbfb25253626ede9a020ee9280a17 Mon Sep 17 00:00:00 2001 From: Andreas Huber Date: Thu, 27 Sep 2012 14:13:05 -0700 Subject: Cleaner Wifi Display shutdown process, avoid crashing HDCP on exit. Change-Id: Ie54ee3edd672ec629360b4ecc5df2f85ecbaa45f related-to-bug: 7247584 --- media/libmediaplayerservice/HDCP.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'media/libmediaplayerservice/HDCP.cpp') 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 &observer) { + Mutex::Autolock autoLock(mLock); + if (mHDCPModule == NULL) { return NO_INIT; } @@ -73,6 +77,8 @@ status_t HDCP::setObserver(const sp &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 */); } -- cgit v1.1