summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--media/libstagefright/SurfaceMediaSource.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/media/libstagefright/SurfaceMediaSource.cpp b/media/libstagefright/SurfaceMediaSource.cpp
index 3ba18b6631..d7370551e0 100644
--- a/media/libstagefright/SurfaceMediaSource.cpp
+++ b/media/libstagefright/SurfaceMediaSource.cpp
@@ -389,9 +389,12 @@ void SurfaceMediaSource::signalBufferReturned(MediaBufferBase *buffer) {
Mutex::Autolock lock(mMutex);
buffer_handle_t bufferHandle = getMediaBufferHandle(buffer);
+ ANativeWindowBuffer* curNativeHandle = NULL;
for (size_t i = 0; i < mCurrentBuffers.size(); i++) {
- if (mCurrentBuffers[i]->handle == bufferHandle) {
+ curNativeHandle = mCurrentBuffers[i]->getNativeBuffer();
+ if ((mCurrentBuffers[i]->handle == bufferHandle) ||
+ ((buffer_handle_t)curNativeHandle == bufferHandle)) {
mCurrentBuffers.removeAt(i);
foundBuffer = true;
break;
@@ -407,7 +410,10 @@ void SurfaceMediaSource::signalBufferReturned(MediaBufferBase *buffer) {
continue;
}
- if (bufferHandle == mSlots[id].mGraphicBuffer->handle) {
+ curNativeHandle = mSlots[id].mGraphicBuffer->getNativeBuffer();
+
+ if ((bufferHandle == mSlots[id].mGraphicBuffer->handle) ||
+ (bufferHandle == (buffer_handle_t)curNativeHandle)) {
ALOGV("Slot %d returned, matches handle = %p", id,
mSlots[id].mGraphicBuffer->handle);