am 0b9a12bf: Merge "Fix issue 2929440" into gingerbread
Merge commit '0b9a12bf8101830fa9bde4015d0043df14cab6db' into gingerbread-plus-aosp * commit '0b9a12bf8101830fa9bde4015d0043df14cab6db': Fix issue 2929440
This commit is contained in:
@@ -1601,7 +1601,7 @@ bool AudioFlinger::MixerThread::threadLoop()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (mSuspended) {
|
if (mSuspended) {
|
||||||
sleepTime = idleSleepTime;
|
sleepTime = suspendSleepTimeUs();
|
||||||
}
|
}
|
||||||
// sleepTime == 0 means we must write to audio hardware
|
// sleepTime == 0 means we must write to audio hardware
|
||||||
if (sleepTime == 0) {
|
if (sleepTime == 0) {
|
||||||
@@ -2021,6 +2021,11 @@ uint32_t AudioFlinger::MixerThread::idleSleepTimeUs()
|
|||||||
return (uint32_t)(((mFrameCount * 1000) / mSampleRate) * 1000) / 2;
|
return (uint32_t)(((mFrameCount * 1000) / mSampleRate) * 1000) / 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t AudioFlinger::MixerThread::suspendSleepTimeUs()
|
||||||
|
{
|
||||||
|
return (uint32_t)(((mFrameCount * 1000) / mSampleRate) * 1000);
|
||||||
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
AudioFlinger::DirectOutputThread::DirectOutputThread(const sp<AudioFlinger>& audioFlinger, AudioStreamOut* output, int id, uint32_t device)
|
AudioFlinger::DirectOutputThread::DirectOutputThread(const sp<AudioFlinger>& audioFlinger, AudioStreamOut* output, int id, uint32_t device)
|
||||||
: PlaybackThread(audioFlinger, output, id, device)
|
: PlaybackThread(audioFlinger, output, id, device)
|
||||||
@@ -2365,7 +2370,7 @@ bool AudioFlinger::DirectOutputThread::threadLoop()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (mSuspended) {
|
if (mSuspended) {
|
||||||
sleepTime = idleSleepTime;
|
sleepTime = suspendSleepTimeUs();
|
||||||
}
|
}
|
||||||
// sleepTime == 0 means we must write to audio hardware
|
// sleepTime == 0 means we must write to audio hardware
|
||||||
if (sleepTime == 0) {
|
if (sleepTime == 0) {
|
||||||
@@ -2486,6 +2491,18 @@ uint32_t AudioFlinger::DirectOutputThread::idleSleepTimeUs()
|
|||||||
return time;
|
return time;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t AudioFlinger::DirectOutputThread::suspendSleepTimeUs()
|
||||||
|
{
|
||||||
|
uint32_t time;
|
||||||
|
if (AudioSystem::isLinearPCM(mFormat)) {
|
||||||
|
time = (uint32_t)(((mFrameCount * 1000) / mSampleRate) * 1000);
|
||||||
|
} else {
|
||||||
|
time = 10000;
|
||||||
|
}
|
||||||
|
return time;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
AudioFlinger::DuplicatingThread::DuplicatingThread(const sp<AudioFlinger>& audioFlinger, AudioFlinger::MixerThread* mainThread, int id)
|
AudioFlinger::DuplicatingThread::DuplicatingThread(const sp<AudioFlinger>& audioFlinger, AudioFlinger::MixerThread* mainThread, int id)
|
||||||
@@ -2612,7 +2629,7 @@ bool AudioFlinger::DuplicatingThread::threadLoop()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (mSuspended) {
|
if (mSuspended) {
|
||||||
sleepTime = idleSleepTime;
|
sleepTime = suspendSleepTimeUs();
|
||||||
}
|
}
|
||||||
// sleepTime == 0 means we must write to audio hardware
|
// sleepTime == 0 means we must write to audio hardware
|
||||||
if (sleepTime == 0) {
|
if (sleepTime == 0) {
|
||||||
|
|||||||
@@ -664,6 +664,7 @@ private:
|
|||||||
virtual void deleteTrackName_l(int name) = 0;
|
virtual void deleteTrackName_l(int name) = 0;
|
||||||
virtual uint32_t activeSleepTimeUs() = 0;
|
virtual uint32_t activeSleepTimeUs() = 0;
|
||||||
virtual uint32_t idleSleepTimeUs() = 0;
|
virtual uint32_t idleSleepTimeUs() = 0;
|
||||||
|
virtual uint32_t suspendSleepTimeUs() = 0;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
@@ -724,6 +725,7 @@ private:
|
|||||||
virtual void deleteTrackName_l(int name);
|
virtual void deleteTrackName_l(int name);
|
||||||
virtual uint32_t activeSleepTimeUs();
|
virtual uint32_t activeSleepTimeUs();
|
||||||
virtual uint32_t idleSleepTimeUs();
|
virtual uint32_t idleSleepTimeUs();
|
||||||
|
virtual uint32_t suspendSleepTimeUs();
|
||||||
|
|
||||||
AudioMixer* mAudioMixer;
|
AudioMixer* mAudioMixer;
|
||||||
};
|
};
|
||||||
@@ -744,6 +746,7 @@ private:
|
|||||||
virtual void deleteTrackName_l(int name);
|
virtual void deleteTrackName_l(int name);
|
||||||
virtual uint32_t activeSleepTimeUs();
|
virtual uint32_t activeSleepTimeUs();
|
||||||
virtual uint32_t idleSleepTimeUs();
|
virtual uint32_t idleSleepTimeUs();
|
||||||
|
virtual uint32_t suspendSleepTimeUs();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void applyVolume(uint16_t leftVol, uint16_t rightVol, bool ramp);
|
void applyVolume(uint16_t leftVol, uint16_t rightVol, bool ramp);
|
||||||
|
|||||||
Reference in New Issue
Block a user