diff options
author | Chong Zhang <chz@google.com> | 2015-06-29 12:51:39 -0700 |
---|---|---|
committer | Chong Zhang <chz@google.com> | 2015-06-29 12:51:39 -0700 |
commit | 5419242328f33f4d126a22ef6296c99353f4dfb4 (patch) | |
tree | ee5e4c2fa1bc5e52b7c071ddfae97fac9fa24b36 /media | |
parent | 1d7b3bb1fcab6bd3e2b51394e9e66fa86c61d333 (diff) | |
download | frameworks_av-5419242328f33f4d126a22ef6296c99353f4dfb4.zip frameworks_av-5419242328f33f4d126a22ef6296c99353f4dfb4.tar.gz frameworks_av-5419242328f33f4d126a22ef6296c99353f4dfb4.tar.bz2 |
ignore buffers that's already removed
bug: 22005018
Change-Id: I892a0fe77519d5fb996bcb4cc95e0d10e859000c
Diffstat (limited to 'media')
-rw-r--r-- | media/libstagefright/omx/OMXNodeInstance.cpp | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/media/libstagefright/omx/OMXNodeInstance.cpp b/media/libstagefright/omx/OMXNodeInstance.cpp index 147aae7..95549a4 100644 --- a/media/libstagefright/omx/OMXNodeInstance.cpp +++ b/media/libstagefright/omx/OMXNodeInstance.cpp @@ -1607,7 +1607,12 @@ OMX_BUFFERHEADERTYPE *OMXNodeInstance::findBufferHeader(OMX::buffer_id buffer) { return NULL; } Mutex::Autolock autoLock(mBufferIDLock); - return mBufferIDToBufferHeader.valueFor(buffer); + ssize_t index = mBufferIDToBufferHeader.indexOfKey(buffer); + if (index < 0) { + CLOGW("findBufferHeader: buffer %u not found", buffer); + return NULL; + } + return mBufferIDToBufferHeader.valueAt(index); } OMX::buffer_id OMXNodeInstance::findBufferID(OMX_BUFFERHEADERTYPE *bufferHeader) { @@ -1615,7 +1620,12 @@ OMX::buffer_id OMXNodeInstance::findBufferID(OMX_BUFFERHEADERTYPE *bufferHeader) return 0; } Mutex::Autolock autoLock(mBufferIDLock); - return mBufferHeaderToBufferID.valueFor(bufferHeader); + ssize_t index = mBufferHeaderToBufferID.indexOfKey(bufferHeader); + if (index < 0) { + CLOGW("findBufferID: bufferHeader %p not found", bufferHeader); + return 0; + } + return mBufferHeaderToBufferID.valueAt(index); } void OMXNodeInstance::invalidateBufferID(OMX::buffer_id buffer) { @@ -1623,8 +1633,13 @@ void OMXNodeInstance::invalidateBufferID(OMX::buffer_id buffer) { return; } Mutex::Autolock autoLock(mBufferIDLock); - mBufferHeaderToBufferID.removeItem(mBufferIDToBufferHeader.valueFor(buffer)); - mBufferIDToBufferHeader.removeItem(buffer); + ssize_t index = mBufferIDToBufferHeader.indexOfKey(buffer); + if (index < 0) { + CLOGW("invalidateBufferID: buffer %u not found", buffer); + return; + } + mBufferHeaderToBufferID.removeItem(mBufferIDToBufferHeader.valueAt(index)); + mBufferIDToBufferHeader.removeItemsAt(index); } } // namespace android |