From: Eric Laurent Date: Tue, 24 Jan 2012 19:51:47 +0000 (-0800) Subject: am 41773d46: Merge "DO NOT MERGE Revert "Revert "AudioFlinger: mix track only when... X-Git-Tag: android-x86-4.4-r1~1579^2~24^2~38 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=7c5aea0a8d9b422999483f96a2566f77ff11abf2;p=android-x86%2Fframeworks-av.git am 41773d46: Merge "DO NOT MERGE Revert "Revert "AudioFlinger: mix track only when really ready (2)""" into ics-mr1 * commit '41773d46556aa47d4322ff89fdaf7d1345c2d1f2': DO NOT MERGE Revert "Revert "AudioFlinger: mix track only when really ready (2)"" --- 7c5aea0a8d9b422999483f96a2566f77ff11abf2 diff --cc services/audioflinger/AudioFlinger.cpp index e12a9854d8,133dabdfc5..697bcdf6d5 --- a/services/audioflinger/AudioFlinger.cpp +++ b/services/audioflinger/AudioFlinger.cpp @@@ -1940,11 -1940,12 +1940,12 @@@ bool AudioFlinger::MixerThread::threadL releaseWakeLock_l(); // wait until we have something to do... - LOGV("MixerThread %p TID %d going to sleep\n", this, gettid()); + ALOGV("MixerThread %p TID %d going to sleep\n", this, gettid()); mWaitWorkCV.wait(mLock); - LOGV("MixerThread %p TID %d waking up\n", this, gettid()); + ALOGV("MixerThread %p TID %d waking up\n", this, gettid()); acquireWakeLock_l(); + mPrevMixerStatus = MIXER_IDLE; if (mMasterMute == false) { char value[PROPERTY_VALUE_MAX]; property_get("ro.audio.silent", value, "0"); @@@ -2229,9 -2230,15 +2230,15 @@@ uint32_t AudioFlinger::MixerThread::pre // reset retry count track->mRetryCount = kMaxTrackRetries; - mixerStatus = MIXER_TRACKS_READY; + // If one track is ready, set the mixer ready if: + // - the mixer was not ready during previous round OR + // - no other track is not ready + if (mPrevMixerStatus != MIXER_TRACKS_READY || + mixerStatus != MIXER_TRACKS_ENABLED) { + mixerStatus = MIXER_TRACKS_READY; + } } else { - //LOGV("track %d u=%08x, s=%08x [NOT READY] on thread %p", track->name(), cblk->user, cblk->server, this); + //ALOGV("track %d u=%08x, s=%08x [NOT READY] on thread %p", track->name(), cblk->user, cblk->server, this); if (track->isStopped()) { track->reset(); } @@@ -3011,11 -3023,12 +3023,12 @@@ bool AudioFlinger::DuplicatingThread::t if (exitPending()) break; releaseWakeLock_l(); - LOGV("DuplicatingThread %p TID %d going to sleep\n", this, gettid()); + ALOGV("DuplicatingThread %p TID %d going to sleep\n", this, gettid()); mWaitWorkCV.wait(mLock); - LOGV("DuplicatingThread %p TID %d waking up\n", this, gettid()); + ALOGV("DuplicatingThread %p TID %d waking up\n", this, gettid()); acquireWakeLock_l(); + mPrevMixerStatus = MIXER_IDLE; if (mMasterMute == false) { char value[PROPERTY_VALUE_MAX]; property_get("ro.audio.silent", value, "0");