summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2010-09-17 12:50:45 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2010-09-17 12:50:45 -0700
commitab1b9612fc5ad9d98ff76b3eb18d9f48a295f13e (patch)
treef6a8146ec7765f4fedb6a531dac4bfc5640ef9e3 /media
parent583027ca28629510622bde541cc1649371ac9502 (diff)
parent00998fbb52dfa78ac3a4b3706d64fc612926bfbc (diff)
downloadframeworks_av-ab1b9612fc5ad9d98ff76b3eb18d9f48a295f13e.zip
frameworks_av-ab1b9612fc5ad9d98ff76b3eb18d9f48a295f13e.tar.gz
frameworks_av-ab1b9612fc5ad9d98ff76b3eb18d9f48a295f13e.tar.bz2
am f98197a7: Make sure the message dispatcher stays around until after OMX_FreeHandle is finished in case it posts some more messages during shutdown. Clear the source as soon as possible in OMXCodec\'s destructor.
Merge commit 'f98197a7274c2d7da647f52b3d8b0c74492139af' into gingerbread-plus-aosp * commit 'f98197a7274c2d7da647f52b3d8b0c74492139af': Make sure the message dispatcher stays around until after OMX_FreeHandle is finished in case it posts some more messages during shutdown. Clear the source as soon as possible in OMXCodec's destructor.
Diffstat (limited to 'media')
-rw-r--r--media/libstagefright/OMXCodec.cpp2
-rw-r--r--media/libstagefright/omx/OMX.cpp8
2 files changed, 7 insertions, 3 deletions
diff --git a/media/libstagefright/OMXCodec.cpp b/media/libstagefright/OMXCodec.cpp
index b6710af..523b79c 100644
--- a/media/libstagefright/OMXCodec.cpp
+++ b/media/libstagefright/OMXCodec.cpp
@@ -1443,6 +1443,8 @@ void OMXCodec::setComponentRole() {
}
OMXCodec::~OMXCodec() {
+ mSource.clear();
+
CHECK(mState == LOADED || mState == ERROR);
status_t err = mOMX->freeNode(mNode);
diff --git a/media/libstagefright/omx/OMX.cpp b/media/libstagefright/omx/OMX.cpp
index 6de761f..c927da1 100644
--- a/media/libstagefright/omx/OMX.cpp
+++ b/media/libstagefright/omx/OMX.cpp
@@ -245,13 +245,15 @@ status_t OMX::freeNode(node_id node) {
CHECK(index >= 0);
mLiveNodes.removeItemsAt(index);
+ instance->observer()->asBinder()->unlinkToDeath(this);
+
+ status_t err = instance->freeNode(mMaster);
+
index = mDispatchers.indexOfKey(node);
CHECK(index >= 0);
mDispatchers.removeItemsAt(index);
- instance->observer()->asBinder()->unlinkToDeath(this);
-
- return instance->freeNode(mMaster);
+ return err;
}
status_t OMX::sendCommand(