am 3893da46: Merge change 6614 into donut
Merge commit '3893da46f0a97d59a7687ae2bd71ba855eb5ffe3' * commit '3893da46f0a97d59a7687ae2bd71ba855eb5ffe3': Fix issue 1970108: crash in AudioFlinger::isMusicActive()
This commit is contained in:
committed by
The Android Open Source Project
commit
2b479be5db
@@ -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){
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user