diff options
author | Glenn Kasten <gkasten@google.com> | 2013-02-18 12:47:49 -0800 |
---|---|---|
committer | Glenn Kasten <gkasten@google.com> | 2013-02-19 10:51:47 -0800 |
commit | 2f8025eef6c681920579f75d298a262b12a80ac9 (patch) | |
tree | 1e3c3880f6198a9ccdcadc0cf97e6de103161aba /services/audioflinger | |
parent | a457c43cd7f4225ffbedfbdcd68dd9cf6fef1d38 (diff) | |
download | frameworks_av-2f8025eef6c681920579f75d298a262b12a80ac9.zip frameworks_av-2f8025eef6c681920579f75d298a262b12a80ac9.tar.gz frameworks_av-2f8025eef6c681920579f75d298a262b12a80ac9.tar.bz2 |
A reference cannot be re-bound
Bug: 8213067
Bug: 6490974
Change-Id: If546215641fbc9a0fb1e8af8b85cc01f0a4b26ab
Diffstat (limited to 'services/audioflinger')
-rw-r--r-- | services/audioflinger/AudioMixer.cpp | 44 |
1 files changed, 24 insertions, 20 deletions
diff --git a/services/audioflinger/AudioMixer.cpp b/services/audioflinger/AudioMixer.cpp index 08325ad..2a8a955 100644 --- a/services/audioflinger/AudioMixer.cpp +++ b/services/audioflinger/AudioMixer.cpp @@ -1064,33 +1064,37 @@ void AudioMixer::process__nop(state_t* state, int64_t pts) // avoid multiple memset() on same buffer uint32_t e1 = e0, e2 = e0; int i = 31 - __builtin_clz(e1); - track_t& t1 = state->tracks[i]; - e2 &= ~(1<<i); - while (e2) { - i = 31 - __builtin_clz(e2); + { + track_t& t1 = state->tracks[i]; e2 &= ~(1<<i); - track_t& t2 = state->tracks[i]; - if (CC_UNLIKELY(t2.mainBuffer != t1.mainBuffer)) { - e1 &= ~(1<<i); + while (e2) { + i = 31 - __builtin_clz(e2); + e2 &= ~(1<<i); + track_t& t2 = state->tracks[i]; + if (CC_UNLIKELY(t2.mainBuffer != t1.mainBuffer)) { + e1 &= ~(1<<i); + } } - } - e0 &= ~(e1); + e0 &= ~(e1); - memset(t1.mainBuffer, 0, bufSize); + memset(t1.mainBuffer, 0, bufSize); + } while (e1) { i = 31 - __builtin_clz(e1); e1 &= ~(1<<i); - t1 = state->tracks[i]; - size_t outFrames = state->frameCount; - while (outFrames) { - t1.buffer.frameCount = outFrames; - int64_t outputPTS = calculateOutputPTS( - t1, pts, state->frameCount - outFrames); - t1.bufferProvider->getNextBuffer(&t1.buffer, outputPTS); - if (t1.buffer.raw == NULL) break; - outFrames -= t1.buffer.frameCount; - t1.bufferProvider->releaseBuffer(&t1.buffer); + { + track_t& t3 = state->tracks[i]; + size_t outFrames = state->frameCount; + while (outFrames) { + t3.buffer.frameCount = outFrames; + int64_t outputPTS = calculateOutputPTS( + t3, pts, state->frameCount - outFrames); + t3.bufferProvider->getNextBuffer(&t3.buffer, outputPTS); + if (t3.buffer.raw == NULL) break; + outFrames -= t3.buffer.frameCount; + t3.bufferProvider->releaseBuffer(&t3.buffer); + } } } } |