From ea3d5e1f6f3edd3da51e403cb5bfdfaab9b5b8ee Mon Sep 17 00:00:00 2001 From: Pawit Pornkitprasan Date: Sun, 18 Sep 2011 07:52:00 +0700 Subject: Set proper FM volume on start Change-Id: I144433443cbf5c65693cbe584e987977c9f4d24b --- libaudio/AudioHardware.cpp | 4 ++++ libaudio/AudioHardware.h | 1 + 2 files changed, 5 insertions(+) diff --git a/libaudio/AudioHardware.cpp b/libaudio/AudioHardware.cpp index c958e36..3e28448 100644 --- a/libaudio/AudioHardware.cpp +++ b/libaudio/AudioHardware.cpp @@ -98,6 +98,7 @@ AudioHardware::AudioHardware() : mActivatedCP(false), #ifdef HAVE_FM_RADIO mFmFd(-1), + mFmVolume(1), mFmResumeAfterCall(false), #endif mDriverOp(DRV_NONE) @@ -636,6 +637,7 @@ status_t AudioHardware::setMasterVolume(float volume) #ifdef HAVE_FM_RADIO status_t AudioHardware::setFmVolume(float v) { + mFmVolume = v; if (mFmFd > 0) { __u8 fmVolume = (AudioSystem::logToLinear(v) + 5) / 7; LOGD("%s %f %d", __func__, v, (int) fmVolume); @@ -808,6 +810,8 @@ void AudioHardware::enableFMRadio() { if (mFmFd < 0) { mFmFd = open("/dev/radio0", O_RDWR); + // In case setFmVolume was called before FM was enabled, we save the volume and call it here. + setFmVolume(mFmVolume); } } } diff --git a/libaudio/AudioHardware.h b/libaudio/AudioHardware.h index 2a1f6c7..8a781bf 100644 --- a/libaudio/AudioHardware.h +++ b/libaudio/AudioHardware.h @@ -184,6 +184,7 @@ private: #ifdef HAVE_FM_RADIO int mFmFd; + float mFmVolume; bool mFmResumeAfterCall; #endif -- cgit v1.1