diff options
author | Haynes Mathew George <hgeorge@codeaurora.org> | 2014-12-03 14:51:49 -0800 |
---|---|---|
committer | Glenn Kasten <gkasten@google.com> | 2014-12-11 09:14:19 -0800 |
commit | 2cbdfa9c991fc63f52f48831e5509fcc2889db77 (patch) | |
tree | d1594cd0148ac23f2cf69b029d290e2275afb0ac | |
parent | 257fde6eb533b890776c8c45be8b61c48ab04945 (diff) | |
download | hardware_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
-rw-r--r-- | modules/usbaudio/alsa_device_profile.c | 11 |
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); } /* |