mirror of https://gitee.com/openkylin/linux.git
ALSA: usb-audio: Proper fallback at get_term_name()
get_term_name() calls snd_usb_copy_string_desc() for retrieving the name when a specific ID (name field) is given. When this returns an error (zero), however, it simply returns as is. This will end up in a fixed name string in the caller side, which often is meaningless. For giving a bit more useful name string depending on the terminal type, change the get_term_name() function to go through the fallback mode. Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
50947fb04f
commit
56a23ee526
|
@ -656,10 +656,14 @@ static int get_term_name(struct mixer_build *state, struct usb_audio_term *iterm
|
||||||
unsigned char *name, int maxlen, int term_only)
|
unsigned char *name, int maxlen, int term_only)
|
||||||
{
|
{
|
||||||
struct iterm_name_combo *names;
|
struct iterm_name_combo *names;
|
||||||
|
int len;
|
||||||
|
|
||||||
if (iterm->name)
|
if (iterm->name) {
|
||||||
return snd_usb_copy_string_desc(state, iterm->name,
|
len = snd_usb_copy_string_desc(state, iterm->name,
|
||||||
name, maxlen);
|
name, maxlen);
|
||||||
|
if (len)
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
/* virtual type - not a real terminal */
|
/* virtual type - not a real terminal */
|
||||||
if (iterm->type >> 16) {
|
if (iterm->type >> 16) {
|
||||||
|
|
Loading…
Reference in New Issue