Add checks before removing an active buffer in OMXNodeInstance

With this change, OMXNodeInstance will remove a buffer from it's
active list only if OMX_FreeBuffer returns successfully.

Change-Id: I8f6b675cdf1cede60dfe0aebaa902139e44b1233
diff --git a/media/libstagefright/omx/OMXNodeInstance.cpp b/media/libstagefright/omx/OMXNodeInstance.cpp
index 46e5d71..1991df2 100644
--- a/media/libstagefright/omx/OMXNodeInstance.cpp
+++ b/media/libstagefright/omx/OMXNodeInstance.cpp
@@ -759,15 +759,20 @@
         OMX_U32 portIndex, OMX::buffer_id buffer) {
     Mutex::Autolock autoLock(mLock);
 
-    removeActiveBuffer(portIndex, buffer);
-
     OMX_BUFFERHEADERTYPE *header = (OMX_BUFFERHEADERTYPE *)buffer;
     BufferMeta *buffer_meta = static_cast<BufferMeta *>(header->pAppPrivate);
 
     OMX_ERRORTYPE err = OMX_FreeBuffer(mHandle, portIndex, header);
 
-    delete buffer_meta;
-    buffer_meta = NULL;
+    if (err != OMX_ErrorNone) {
+        ALOGW("OMX_FreeBuffer failed w/ err %x, do not remove from active buffer list", err);
+    } else {
+        ALOGI("OMX_FreeBuffer for buffer header %p successful", header);
+        removeActiveBuffer(portIndex, buffer);
+
+        delete buffer_meta;
+        buffer_meta = NULL;
+    }
 
     return StatusFromOMXError(err);
 }