From 10ebac867d4e6e811eab1bd66670da2932767193 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Thu, 5 Feb 2015 14:33:44 +0100 Subject: [PATCH] fix function that searches soundcard --- coreapi/linphonecore.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 5d567fdee..5f0a6b5e0 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -4411,15 +4411,13 @@ static MSSndCard *get_card_from_string_id(const char *devid, unsigned int cap){ } } if (sndcard==NULL) { - /* get a card that has read+write capabilities */ - sndcard=ms_snd_card_manager_get_default_card(ms_snd_card_manager_get()); - /* otherwise refine to the first card having the right capability*/ - if (sndcard==NULL){ - const MSList *elem=ms_snd_card_manager_get_list(ms_snd_card_manager_get()); - for(;elem!=NULL;elem=elem->next){ - sndcard=(MSSndCard*)elem->data; - if (ms_snd_card_get_capabilities(sndcard) & cap) break; - } + if ((cap & MS_SND_CARD_CAP_CAPTURE) && (cap & MS_SND_CARD_CAP_PLAYBACK)){ + sndcard=ms_snd_card_manager_get_default_card(ms_snd_card_manager_get()); + }else if (cap & MS_SND_CARD_CAP_CAPTURE){ + sndcard=ms_snd_card_manager_get_default_capture_card(ms_snd_card_manager_get()); + } + else if (cap & MS_SND_CARD_CAP_PLAYBACK){ + sndcard=ms_snd_card_manager_get_default_playback_card(ms_snd_card_manager_get()); } if (sndcard==NULL){/*looks like a bug! take the first one !*/ const MSList *elem=ms_snd_card_manager_get_list(ms_snd_card_manager_get());