summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorLajos Molnar <lajos@google.com>2014-12-15 22:41:38 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-12-15 22:41:38 +0000
commitd7aa535fc6ed1f4f0ee68bd3c7c483717d30205e (patch)
tree67ff24ec2416909682edb9b160da2ae2ec1752ad /media
parentdc039672b8fad7746200ecc36304d0e85db4f367 (diff)
parent06f9952190357426445344090b4e20b8758a118a (diff)
downloadframeworks_av-d7aa535fc6ed1f4f0ee68bd3c7c483717d30205e.zip
frameworks_av-d7aa535fc6ed1f4f0ee68bd3c7c483717d30205e.tar.gz
frameworks_av-d7aa535fc6ed1f4f0ee68bd3c7c483717d30205e.tar.bz2
am 06f99521: am 2aa82e78: Merge "MediaCodecList: handle binder death" into lmp-mr1-dev
* commit '06f9952190357426445344090b4e20b8758a118a': MediaCodecList: handle binder death
Diffstat (limited to 'media')
-rw-r--r--media/libstagefright/MediaCodecList.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/media/libstagefright/MediaCodecList.cpp b/media/libstagefright/MediaCodecList.cpp
index 5b8be46..cf6e937 100644
--- a/media/libstagefright/MediaCodecList.cpp
+++ b/media/libstagefright/MediaCodecList.cpp
@@ -62,6 +62,14 @@ static Mutex sRemoteInitMutex;
sp<IMediaCodecList> MediaCodecList::sRemoteList;
+sp<MediaCodecList::BinderDeathObserver> MediaCodecList::sBinderDeathObserver;
+
+void MediaCodecList::BinderDeathObserver::binderDied(const wp<IBinder> &who __unused) {
+ Mutex::Autolock _l(sRemoteInitMutex);
+ sRemoteList.clear();
+ sBinderDeathObserver.clear();
+}
+
// static
sp<IMediaCodecList> MediaCodecList::getInstance() {
Mutex::Autolock _l(sRemoteInitMutex);
@@ -72,8 +80,11 @@ sp<IMediaCodecList> MediaCodecList::getInstance() {
interface_cast<IMediaPlayerService>(binder);
if (service.get() != NULL) {
sRemoteList = service->getCodecList();
+ if (sRemoteList != NULL) {
+ sBinderDeathObserver = new BinderDeathObserver();
+ binder->linkToDeath(sBinderDeathObserver.get());
+ }
}
-
if (sRemoteList == NULL) {
// if failed to get remote list, create local list
sRemoteList = getLocalInstance();