audiopolicy: Refactor HwModuleCollection
-- make AudioPolicyManager::mHwModules to only store
loaded modules; all modules stored in mHwModulesAll;
this removes lots of checks for HwModule::mHandle;
-- use "for range" loops when iterating over mHwModules;
-- use HwModulesCollection::getModuleFromName for finding
the remote submix module;
-- log statements print HwModule's name instead of index.
Test: audio still works
Change-Id: I2d86caae23e87e25b6a367cb4042741f0b32e99c
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.h b/services/audiopolicy/managerdefault/AudioPolicyManager.h
index 2d41bd1..b61bc2d 100644
--- a/services/audiopolicy/managerdefault/AudioPolicyManager.h
+++ b/services/audiopolicy/managerdefault/AudioPolicyManager.h
@@ -266,7 +266,7 @@
{
return mDefaultOutputDevice;
}
-protected:
+
void addOutput(audio_io_handle_t output, const sp<SwAudioOutputDescriptor>& outputDesc);
void removeOutput(audio_io_handle_t output);
void addInput(audio_io_handle_t input, const sp<AudioInputDescriptor>& inputDesc);
@@ -530,7 +530,9 @@
EffectDescriptorCollection mEffects; // list of registered audio effects
bool mA2dpSuspended; // true if A2DP output is suspended
sp<DeviceDescriptor> mDefaultOutputDevice; // output device selected by default at boot time
- HwModuleCollection mHwModules;
+ HwModuleCollection mHwModules; // contains only modules that have been loaded successfully
+ HwModuleCollection mHwModulesAll; // normally not needed, used during construction and for
+ // dumps
volatile int32_t mAudioPortGeneration;