Merge change 2706 into donut

* changes:
  Fix issue 1883666: Audio coming from the music player stopped suddenly
This commit is contained in:
Android (Google) Code Review
2009-05-29 09:40:23 -07:00

View File

@@ -817,19 +817,22 @@ void AudioFlinger::handleForcedSpeakerRoute(int command)
{ {
AutoMutex lock(mHardwareLock); AutoMutex lock(mHardwareLock);
if (mForcedSpeakerCount++ == 0) { if (mForcedSpeakerCount++ == 0) {
mRouteRestoreTime = 0; if (mForcedRoute == 0) {
mMusicMuteSaved = mHardwareMixerThread->streamMute(AudioSystem::MUSIC); mMusicMuteSaved = mHardwareMixerThread->streamMute(AudioSystem::MUSIC);
if (mForcedRoute == 0 && !(mSavedRoute & AudioSystem::ROUTE_SPEAKER)) { LOGV("++mForcedSpeakerCount == 0, mMusicMuteSaved = %d, mRouteRestoreTime = %d", mMusicMuteSaved, mRouteRestoreTime);
LOGV("Route forced to Speaker ON %08x", mSavedRoute | AudioSystem::ROUTE_SPEAKER); if (!(mSavedRoute & AudioSystem::ROUTE_SPEAKER)) {
mHardwareMixerThread->setStreamMute(AudioSystem::MUSIC, true); LOGV("Route forced to Speaker ON %08x", mSavedRoute | AudioSystem::ROUTE_SPEAKER);
usleep(mHardwareMixerThread->latency()*1000); mHardwareMixerThread->setStreamMute(AudioSystem::MUSIC, true);
mHardwareStatus = AUDIO_HW_SET_ROUTING; usleep(mHardwareMixerThread->latency()*1000);
mAudioHardware->setRouting(AudioSystem::MODE_NORMAL, mSavedRoute | AudioSystem::ROUTE_SPEAKER); mHardwareStatus = AUDIO_HW_SET_ROUTING;
mHardwareStatus = AUDIO_HW_IDLE; mAudioHardware->setRouting(AudioSystem::MODE_NORMAL, mSavedRoute | AudioSystem::ROUTE_SPEAKER);
// delay track start so that audio hardware has time to siwtch routes mHardwareStatus = AUDIO_HW_IDLE;
usleep(kStartSleepTime); // delay track start so that audio hardware has time to siwtch routes
usleep(kStartSleepTime);
}
} }
mForcedRoute = AudioSystem::ROUTE_SPEAKER; mForcedRoute = AudioSystem::ROUTE_SPEAKER;
mRouteRestoreTime = 0;
} }
LOGV("mForcedSpeakerCount incremented to %d", mForcedSpeakerCount); LOGV("mForcedSpeakerCount incremented to %d", mForcedSpeakerCount);
} }