summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBill Chen <billchen1977@gmail.com>2017-04-01 21:05:56 +0800
committerEthan Chen <intervigil@gmail.com>2017-04-13 15:03:55 +0000
commit143af6b930f9ba08988c9647f62d284cab7fc7b5 (patch)
treee3d42db4ab5863db02494637df33109ec6d69042
parentbcfb7ac8fe386b91611b7111273f63da61681d1a (diff)
downloadframeworks_av-cm-14.1_old.tar.gz
frameworks_av-cm-14.1_old.tar.bz2
frameworks_av-cm-14.1_old.zip
stagefright: Fix SurfaceMediaSource buffer search condition when buffer returncm-14.1_old
Refer to commit 3e328782f1e1061d08ea0c45b855cc418a2d9ea6, buffer handle stored in MediaBuffer had changed, but the buffer return code did not changed correspondly, so returned buffer can't be found in list and lead to carsh. This commit fix it and make wifidisplay working now. Change-Id: Ic0d99f471f5f246087946367726d7e76a689fe1f
-rw-r--r--media/libstagefright/SurfaceMediaSource.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/media/libstagefright/SurfaceMediaSource.cpp b/media/libstagefright/SurfaceMediaSource.cpp
index 108fb876d2..b77fc2132e 100644
--- a/media/libstagefright/SurfaceMediaSource.cpp
+++ b/media/libstagefright/SurfaceMediaSource.cpp
@@ -427,7 +427,11 @@ void SurfaceMediaSource::signalBufferReturned(MediaBuffer *buffer) {
buffer_handle_t bufferHandle = getMediaBufferHandle(buffer);
for (size_t i = 0; i < mCurrentBuffers.size(); i++) {
+#ifdef CAMCORDER_GRALLOC_SOURCE
if (mCurrentBuffers[i]->handle == bufferHandle) {
+#else
+ if ((buffer_handle_t)mCurrentBuffers[i]->getNativeBuffer() == bufferHandle) {
+#endif
mCurrentBuffers.removeAt(i);
foundBuffer = true;
break;
@@ -443,7 +447,11 @@ void SurfaceMediaSource::signalBufferReturned(MediaBuffer *buffer) {
continue;
}
+#ifdef CAMCORDER_GRALLOC_SOURCE
if (bufferHandle == mSlots[id].mGraphicBuffer->handle) {
+#else
+ if (bufferHandle == (buffer_handle_t)mSlots[id].mGraphicBuffer->getNativeBuffer()) {
+#endif
ALOGV("Slot %d returned, matches handle = %p", id,
mSlots[id].mGraphicBuffer->handle);