aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--base/src/portbase.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/base/src/portbase.cpp b/base/src/portbase.cpp
index e939960..a43fe86 100644
--- a/base/src/portbase.cpp
+++ b/base/src/portbase.cpp
@@ -754,16 +754,20 @@ OMX_ERRORTYPE PortBase::RetainAndReturnBuffer( OMX_BUFFERHEADERTYPE *pRetain, OM
length = queue_length(&bufferq);
OMX_BUFFERHEADERTYPE *p;
/* remove returned buffer from the queue */
- for (OMX_U32 i = 0; i < length; i++) {
+ OMX_U32 i = 0;
+ for (i = 0; i < length; i++) {
p = (OMX_BUFFERHEADERTYPE *)queue_pop_head(&bufferq);
if (p == pReturn) {
break;
}
queue_push_tail(&bufferq, p);
}
-
pthread_mutex_unlock(&bufferq_lock);
+ if (i == length) {
+ return OMX_ErrorNone;
+ }
+
return ReturnThisBuffer(pReturn);
}