summaryrefslogtreecommitdiffstats
path: root/media/libmedia
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2013-10-18 15:06:37 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2013-10-18 15:06:37 -0700
commit77177fa20773d02b4f9c4147ecb98107f019fa7d (patch)
tree9d72d4d5d404fda711ae8e7b476052ef5d81a8cf /media/libmedia
parent6edd8ca5b7e3d169db4314d2b994bc9d48e9e082 (diff)
parent95c03858e2ab4fb693a2bfe47b3caa806e43c044 (diff)
downloadframeworks_av-77177fa20773d02b4f9c4147ecb98107f019fa7d.zip
frameworks_av-77177fa20773d02b4f9c4147ecb98107f019fa7d.tar.gz
frameworks_av-77177fa20773d02b4f9c4147ecb98107f019fa7d.tar.bz2
am 95c03858: Merge "Allow releaseBuffer after flush" into klp-dev
* commit '95c03858e2ab4fb693a2bfe47b3caa806e43c044': Allow releaseBuffer after flush
Diffstat (limited to 'media/libmedia')
-rw-r--r--media/libmedia/AudioTrackShared.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/media/libmedia/AudioTrackShared.cpp b/media/libmedia/AudioTrackShared.cpp
index da73d65..caa7900 100644
--- a/media/libmedia/AudioTrackShared.cpp
+++ b/media/libmedia/AudioTrackShared.cpp
@@ -506,7 +506,7 @@ ServerProxy::ServerProxy(audio_track_cblk_t* cblk, void *buffers, size_t frameCo
{
}
-status_t ServerProxy::obtainBuffer(Buffer* buffer)
+status_t ServerProxy::obtainBuffer(Buffer* buffer, bool ackFlush)
{
LOG_ALWAYS_FATAL_IF(buffer == NULL || buffer->mFrameCount == 0);
if (mIsShutdown) {
@@ -579,7 +579,11 @@ status_t ServerProxy::obtainBuffer(Buffer* buffer)
buffer->mRaw = part1 > 0 ?
&((char *) mBuffers)[(mIsOut ? front : rear) * mFrameSize] : NULL;
buffer->mNonContig = availToServer - part1;
- mUnreleased = part1;
+ // After flush(), allow releaseBuffer() on a previously obtained buffer;
+ // see "Acknowledge any pending flush()" in audioflinger/Tracks.cpp.
+ if (!ackFlush) {
+ mUnreleased = part1;
+ }
return part1 > 0 ? NO_ERROR : WOULD_BLOCK;
}
no_init:
@@ -761,7 +765,7 @@ ssize_t StaticAudioTrackServerProxy::pollPosition()
return (ssize_t) position;
}
-status_t StaticAudioTrackServerProxy::obtainBuffer(Buffer* buffer)
+status_t StaticAudioTrackServerProxy::obtainBuffer(Buffer* buffer, bool ackFlush)
{
if (mIsShutdown) {
buffer->mFrameCount = 0;