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