Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1db89b9c authored by Eric Laurent's avatar Eric Laurent
Browse files

Audio policy: fix device gain initialization

Fix initilization of default gain configuration for
audio devices loaded from audio_policy.conf.

Initialization cannot be done in constructor as the possible
gain configurations are not loaded yet.

Bug: 19120566.
Change-Id: I78f057ecfa1a121365ac3d8f317912a6f1647627
parent 64c496c8
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -7449,9 +7449,6 @@ AudioPolicyManager::DeviceDescriptor::DeviceDescriptor(const String8& name, audi
                             NULL),
                     mDeviceType(type), mAddress(""), mId(0)
{
    if (mGains.size() > 0) {
        mGains[0]->getDefaultConfig(&mGain);
    }
}

bool AudioPolicyManager::DeviceDescriptor::equals(const sp<DeviceDescriptor>& other) const
@@ -7466,6 +7463,15 @@ bool AudioPolicyManager::DeviceDescriptor::equals(const sp<DeviceDescriptor>& ot
                mChannelMask == other->mChannelMask);
}

void AudioPolicyManager::DeviceDescriptor::loadGains(cnode *root)
{
    AudioPort::loadGains(root);
    if (mGains.size() > 0) {
        mGains[0]->getDefaultConfig(&mGain);
    }
}


void AudioPolicyManager::DeviceVector::refreshTypes()
{
    mDeviceTypes = AUDIO_DEVICE_NONE;
+6 −2
Original line number Diff line number Diff line
@@ -264,7 +264,7 @@ protected:

            audio_gain_mode_t loadGainMode(char *name);
            void loadGain(cnode *root, int index);
            void loadGains(cnode *root);
            virtual void loadGains(cnode *root);

            // searches for an exact match
            status_t checkExactSamplingRate(uint32_t samplingRate) const;
@@ -344,10 +344,14 @@ protected:
            virtual ~DeviceDescriptor() {}

            bool equals(const sp<DeviceDescriptor>& other) const;

            // AudioPortConfig
            virtual sp<AudioPort> getAudioPort() const { return (AudioPort*) this; }
            virtual void toAudioPortConfig(struct audio_port_config *dstConfig,
                                   const struct audio_port_config *srcConfig = NULL) const;
            virtual sp<AudioPort> getAudioPort() const { return (AudioPort*) this; }

            // AudioPort
            virtual void loadGains(cnode *root);
            virtual void toAudioPort(struct audio_port *port) const;

            status_t dump(int fd, int spaces, int index) const;