Loading services/audioflinger/Threads.cpp +8 −5 Original line number Original line Diff line number Diff line Loading @@ -5137,7 +5137,7 @@ reacquire_wakelock: sleepUs = kRecordThreadSleepUs; sleepUs = kRecordThreadSleepUs; } } if (framesRead <= 0) { if (framesRead <= 0) { continue; goto unlock; } } ALOG_ASSERT(framesRead > 0); ALOG_ASSERT(framesRead > 0); Loading @@ -5145,11 +5145,13 @@ reacquire_wakelock: (void) mTeeSink->write(&mRsmpInBuffer[rear * mChannelCount], framesRead); (void) mTeeSink->write(&mRsmpInBuffer[rear * mChannelCount], framesRead); } } // If destination is non-contiguous, we now correct for reading past end of buffer. // If destination is non-contiguous, we now correct for reading past end of buffer. { size_t part1 = mRsmpInFramesP2 - rear; size_t part1 = mRsmpInFramesP2 - rear; if ((size_t) framesRead > part1) { if ((size_t) framesRead > part1) { memcpy(mRsmpInBuffer, &mRsmpInBuffer[mRsmpInFramesP2 * mChannelCount], memcpy(mRsmpInBuffer, &mRsmpInBuffer[mRsmpInFramesP2 * mChannelCount], (framesRead - part1) * mFrameSize); (framesRead - part1) * mFrameSize); } } } rear = mRsmpInRear += framesRead; rear = mRsmpInRear += framesRead; size = activeTracks.size(); size = activeTracks.size(); Loading Loading @@ -5356,6 +5358,7 @@ reacquire_wakelock: } } unlock: // enable changes in effect chain // enable changes in effect chain unlockEffectChains(effectChains); unlockEffectChains(effectChains); // effectChains doesn't need to be cleared, since it is cleared by destructor at scope end // effectChains doesn't need to be cleared, since it is cleared by destructor at scope end Loading Loading
services/audioflinger/Threads.cpp +8 −5 Original line number Original line Diff line number Diff line Loading @@ -5137,7 +5137,7 @@ reacquire_wakelock: sleepUs = kRecordThreadSleepUs; sleepUs = kRecordThreadSleepUs; } } if (framesRead <= 0) { if (framesRead <= 0) { continue; goto unlock; } } ALOG_ASSERT(framesRead > 0); ALOG_ASSERT(framesRead > 0); Loading @@ -5145,11 +5145,13 @@ reacquire_wakelock: (void) mTeeSink->write(&mRsmpInBuffer[rear * mChannelCount], framesRead); (void) mTeeSink->write(&mRsmpInBuffer[rear * mChannelCount], framesRead); } } // If destination is non-contiguous, we now correct for reading past end of buffer. // If destination is non-contiguous, we now correct for reading past end of buffer. { size_t part1 = mRsmpInFramesP2 - rear; size_t part1 = mRsmpInFramesP2 - rear; if ((size_t) framesRead > part1) { if ((size_t) framesRead > part1) { memcpy(mRsmpInBuffer, &mRsmpInBuffer[mRsmpInFramesP2 * mChannelCount], memcpy(mRsmpInBuffer, &mRsmpInBuffer[mRsmpInFramesP2 * mChannelCount], (framesRead - part1) * mFrameSize); (framesRead - part1) * mFrameSize); } } } rear = mRsmpInRear += framesRead; rear = mRsmpInRear += framesRead; size = activeTracks.size(); size = activeTracks.size(); Loading Loading @@ -5356,6 +5358,7 @@ reacquire_wakelock: } } unlock: // enable changes in effect chain // enable changes in effect chain unlockEffectChains(effectChains); unlockEffectChains(effectChains); // effectChains doesn't need to be cleared, since it is cleared by destructor at scope end // effectChains doesn't need to be cleared, since it is cleared by destructor at scope end Loading