summaryrefslogtreecommitdiffstats
path: root/modules/usbaudio
diff options
context:
space:
mode:
authorHaynes Mathew George <hgeorge@codeaurora.org>2014-12-03 14:51:49 -0800
committerGlenn Kasten <gkasten@google.com>2014-12-11 09:14:19 -0800
commit2cbdfa9c991fc63f52f48831e5509fcc2889db77 (patch)
treed1594cd0148ac23f2cf69b029d290e2275afb0ac /modules/usbaudio
parent257fde6eb533b890776c8c45be8b61c48ab04945 (diff)
downloadhardware_libhardware-2cbdfa9c991fc63f52f48831e5509fcc2889db77.zip
hardware_libhardware-2cbdfa9c991fc63f52f48831e5509fcc2889db77.tar.gz
hardware_libhardware-2cbdfa9c991fc63f52f48831e5509fcc2889db77.tar.bz2
usbaudio: reset profile on device disconnect
Reset ALSA device profile on disconnect event. Entries like supported sample rates, channel counts, formats will be repopulated on next connect. CRs-Fixed: 765434 Change-Id: I27d3b7fd7ff22646996f58c53de08547b1a1fb6a Bug: 18606219
Diffstat (limited to 'modules/usbaudio')
-rw-r--r--modules/usbaudio/alsa_device_profile.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/modules/usbaudio/alsa_device_profile.c b/modules/usbaudio/alsa_device_profile.c
index 5c4edd1..8e84471 100644
--- a/modules/usbaudio/alsa_device_profile.c
+++ b/modules/usbaudio/alsa_device_profile.c
@@ -58,10 +58,9 @@ extern int8_t const pcm_format_value_map[50];
static const unsigned std_sample_rates[] =
{48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000};
-void profile_init(alsa_device_profile* profile, int direction)
+static void profile_reset(alsa_device_profile* profile)
{
profile->card = profile->device = -1;
- profile->direction = direction;
/* Fill the attribute arrays with invalid values */
size_t index;
@@ -83,6 +82,12 @@ void profile_init(alsa_device_profile* profile, int direction)
profile->is_valid = false;
}
+void profile_init(alsa_device_profile* profile, int direction)
+{
+ profile->direction = direction;
+ profile_reset(profile);
+}
+
bool profile_is_initialized(alsa_device_profile* profile)
{
return profile->card >= 0 && profile->device >= 0;
@@ -97,7 +102,7 @@ bool profile_is_cached_for(alsa_device_profile* profile, int card, int device) {
}
void profile_decache(alsa_device_profile* profile) {
- profile->card = profile->device = -1;
+ profile_reset(profile);
}
/*