summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/omx
diff options
context:
space:
mode:
authorChong Zhang <chz@google.com>2015-06-30 19:38:15 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-06-30 19:38:16 +0000
commitb483c6aa4aacb0ec271b03648fd6eaadc938d995 (patch)
tree5869bf6d3a9b5944059e0195e4415a63cc49ee97 /media/libstagefright/omx
parentad949cd4ca52d19ea5e7a5c5dce84d1410fe5244 (diff)
parent5419242328f33f4d126a22ef6296c99353f4dfb4 (diff)
downloadframeworks_av-b483c6aa4aacb0ec271b03648fd6eaadc938d995.zip
frameworks_av-b483c6aa4aacb0ec271b03648fd6eaadc938d995.tar.gz
frameworks_av-b483c6aa4aacb0ec271b03648fd6eaadc938d995.tar.bz2
Merge "ignore buffers that's already removed" into mnc-dev
Diffstat (limited to 'media/libstagefright/omx')
-rw-r--r--media/libstagefright/omx/OMXNodeInstance.cpp23
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