am 38f6bdc4: am 0a08029f: Fix issue 2306779: Runtime restart - Init failed at android.media.ToneGenerator.
Merge commit '38f6bdc4187f27f86c7f77c88095c663e005dbf4' into eclair-mr2-plus-aosp * commit '38f6bdc4187f27f86c7f77c88095c663e005dbf4': Fix issue 2306779: Runtime restart - Init failed at android.media.ToneGenerator.
This commit is contained in:
@@ -1111,7 +1111,6 @@ void AudioFlinger::PlaybackThread::destroyTrack_l(const sp<Track>& track)
|
|||||||
{
|
{
|
||||||
track->mState = TrackBase::TERMINATED;
|
track->mState = TrackBase::TERMINATED;
|
||||||
if (mActiveTracks.indexOf(track) < 0) {
|
if (mActiveTracks.indexOf(track) < 0) {
|
||||||
LOGV("remove track (%d) and delete from mixer", track->name());
|
|
||||||
mTracks.remove(track);
|
mTracks.remove(track);
|
||||||
deleteTrackName_l(track->name());
|
deleteTrackName_l(track->name());
|
||||||
}
|
}
|
||||||
@@ -1511,6 +1510,7 @@ int AudioFlinger::MixerThread::getTrackName_l()
|
|||||||
// deleteTrackName_l() must be called with ThreadBase::mLock held
|
// deleteTrackName_l() must be called with ThreadBase::mLock held
|
||||||
void AudioFlinger::MixerThread::deleteTrackName_l(int name)
|
void AudioFlinger::MixerThread::deleteTrackName_l(int name)
|
||||||
{
|
{
|
||||||
|
LOGV("remove track (%d) and delete from mixer", name);
|
||||||
mAudioMixer->deleteTrackName(name);
|
mAudioMixer->deleteTrackName(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1922,6 +1922,9 @@ AudioFlinger::DuplicatingThread::DuplicatingThread(const sp<AudioFlinger>& audio
|
|||||||
|
|
||||||
AudioFlinger::DuplicatingThread::~DuplicatingThread()
|
AudioFlinger::DuplicatingThread::~DuplicatingThread()
|
||||||
{
|
{
|
||||||
|
for (size_t i = 0; i < mOutputTracks.size(); i++) {
|
||||||
|
mOutputTracks[i]->destroy();
|
||||||
|
}
|
||||||
mOutputTracks.clear();
|
mOutputTracks.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2044,17 +2047,6 @@ bool AudioFlinger::DuplicatingThread::threadLoop()
|
|||||||
outputTracks.clear();
|
outputTracks.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
{ // scope for the mLock
|
|
||||||
|
|
||||||
Mutex::Autolock _l(mLock);
|
|
||||||
if (!mStandby) {
|
|
||||||
LOGV("DuplicatingThread() exiting out of standby");
|
|
||||||
for (size_t i = 0; i < mOutputTracks.size(); i++) {
|
|
||||||
mOutputTracks[i]->destroy();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user