am 3893da46: Merge change 6614 into donut

Merge commit '3893da46f0a97d59a7687ae2bd71ba855eb5ffe3'

* commit '3893da46f0a97d59a7687ae2bd71ba855eb5ffe3':
  Fix issue 1970108: crash in AudioFlinger::isMusicActive()
This commit is contained in:
Android (Google) Code Review
2009-07-09 12:49:43 -07:00
committed by The Android Open Source Project
2 changed files with 10 additions and 5 deletions

View File

@@ -745,12 +745,13 @@ bool AudioFlinger::streamMute(int stream) const
bool AudioFlinger::isMusicActive() const
{
Mutex::Autolock _l(mLock);
#ifdef WITH_A2DP
if (isA2dpEnabled()) {
return mA2dpMixerThread->isMusicActive();
return mA2dpMixerThread->isMusicActive_l();
}
#endif
return mHardwareMixerThread->isMusicActive();
return mHardwareMixerThread->isMusicActive_l();
}
status_t AudioFlinger::setParameter(const char* key, const char* value)
@@ -1451,7 +1452,8 @@ bool AudioFlinger::MixerThread::streamMute(int stream) const
return mStreamTypes[stream].mute;
}
bool AudioFlinger::MixerThread::isMusicActive() const
// isMusicActive_l() must be called with AudioFlinger::mLock held
bool AudioFlinger::MixerThread::isMusicActive_l() const
{
size_t count = mActiveTracks.size();
for (size_t i = 0 ; i < count ; ++i) {
@@ -2037,7 +2039,10 @@ void AudioFlinger::MixerThread::OutputTrack::write(int16_t* data, uint32_t frame
inBuffer.i16 = data;
if (mCblk->user == 0) {
if (mOutputMixerThread->isMusicActive()) {
mOutputMixerThread->mAudioFlinger->mLock.lock();
bool isMusicActive = mOutputMixerThread->isMusicActive_l();
mOutputMixerThread->mAudioFlinger->mLock.unlock();
if (isMusicActive) {
mCblk->forceReady = 1;
LOGV("OutputTrack::start() force ready");
} else if (mCblk->frameCount > frames){

View File

@@ -463,7 +463,7 @@ private:
virtual float streamVolume(int stream) const;
virtual bool streamMute(int stream) const;
bool isMusicActive() const;
bool isMusicActive_l() const;
sp<Track> createTrack_l(