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.

Change-Id: I9c896cf07dea0c3201b6f074dbaf27e6d85cd784
This commit is contained in:
Andreas Huber
2010-09-17 11:49:39 -07:00
parent 524e6f62c9
commit f98197a727
2 changed files with 7 additions and 3 deletions

View File

@@ -1443,6 +1443,8 @@ void OMXCodec::setComponentRole() {
} }
OMXCodec::~OMXCodec() { OMXCodec::~OMXCodec() {
mSource.clear();
CHECK(mState == LOADED || mState == ERROR); CHECK(mState == LOADED || mState == ERROR);
status_t err = mOMX->freeNode(mNode); status_t err = mOMX->freeNode(mNode);

View File

@@ -245,13 +245,15 @@ status_t OMX::freeNode(node_id node) {
CHECK(index >= 0); CHECK(index >= 0);
mLiveNodes.removeItemsAt(index); mLiveNodes.removeItemsAt(index);
instance->observer()->asBinder()->unlinkToDeath(this);
status_t err = instance->freeNode(mMaster);
index = mDispatchers.indexOfKey(node); index = mDispatchers.indexOfKey(node);
CHECK(index >= 0); CHECK(index >= 0);
mDispatchers.removeItemsAt(index); mDispatchers.removeItemsAt(index);
instance->observer()->asBinder()->unlinkToDeath(this); return err;
return instance->freeNode(mMaster);
} }
status_t OMX::sendCommand( status_t OMX::sendCommand(