diff options
author | Bill Chen <billchen1977@gmail.com> | 2017-04-01 21:05:56 +0800 |
---|---|---|
committer | Ethan Chen <intervigil@gmail.com> | 2017-04-13 15:03:55 +0000 |
commit | 143af6b930f9ba08988c9647f62d284cab7fc7b5 (patch) | |
tree | e3d42db4ab5863db02494637df33109ec6d69042 | |
parent | bcfb7ac8fe386b91611b7111273f63da61681d1a (diff) | |
download | frameworks_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.cpp | 8 |
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); |