From 4b3f6ea976f1c6fd88a3ab89a972b03e5cc969f9 Mon Sep 17 00:00:00 2001 From: smorlat Date: Wed, 12 Aug 2009 14:39:23 +0000 Subject: [PATCH] add support for dynamic plugging of sndcards in winsnd2.c git-svn-id: svn+ssh://svn.savannah.nongnu.org/linphone/trunk@569 3f6dc0c8-ddfe-455d-9043-3cd528dc4637 --- linphone/mediastreamer2/INSTALL | 50 +++++++++++++-------------- linphone/mediastreamer2/src/winsnd2.c | 12 +++---- 2 files changed, 29 insertions(+), 33 deletions(-) diff --git a/linphone/mediastreamer2/INSTALL b/linphone/mediastreamer2/INSTALL index 23e5f25d0..5458714e1 100644 --- a/linphone/mediastreamer2/INSTALL +++ b/linphone/mediastreamer2/INSTALL @@ -1,8 +1,8 @@ Installation Instructions ************************* -Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free -Software Foundation, Inc. +Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, +2006 Free Software Foundation, Inc. This file is free documentation; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. @@ -10,7 +10,10 @@ unlimited permission to copy, distribute and modify it. Basic Installation ================== -These are generic installation instructions. +Briefly, the shell commands `./configure; make; make install' should +configure, build, and install this package. The following +more-detailed instructions are generic; see the `README' file for +instructions specific to this package. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses @@ -23,9 +26,9 @@ debugging `configure'). It can also use an optional file (typically called `config.cache' and enabled with `--cache-file=config.cache' or simply `-C') that saves -the results of its tests to speed up reconfiguring. (Caching is +the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale -cache files.) +cache files. If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail @@ -35,20 +38,17 @@ some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.ac' (or `configure.in') is used to create -`configure' by a program called `autoconf'. You only need -`configure.ac' if you want to change it or regenerate `configure' using -a newer version of `autoconf'. +`configure' by a program called `autoconf'. You need `configure.ac' if +you want to change it or regenerate `configure' using a newer version +of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. If you're - using `csh' on an old version of System V, you might need to type - `sh ./configure' instead to prevent `csh' from trying to execute - `configure' itself. + `./configure' to configure the package for your system. - Running `configure' takes awhile. While running, it prints some - messages telling which features it is checking for. + Running `configure' might take a while. While running, it prints + some messages telling which features it is checking for. 2. Type `make' to compile the package. @@ -78,7 +78,7 @@ details on some of the pertinent environment variables. by setting variables in the command line or in the environment. Here is an example: - ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix + ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. @@ -87,17 +87,15 @@ Compiling For Multiple Architectures You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their -own directory. To do this, you must use a version of `make' that -supports the `VPATH' variable, such as GNU `make'. `cd' to the +own directory. To do this, you can use GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. - If you have to use a `make' that does not support the `VPATH' -variable, you have to compile the package for one architecture at a -time in the source code directory. After you have installed the -package for one architecture, use `make distclean' before reconfiguring -for another architecture. + With a non-GNU `make', it is safer to compile the package for one +architecture at a time in the source code directory. After you have +installed the package for one architecture, use `make distclean' before +reconfiguring for another architecture. Installation Names ================== @@ -190,12 +188,12 @@ them in the `configure' command line, using `VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified `gcc' to be used as the C compiler (unless it is -overridden in the site shell script). Here is a another example: +overridden in the site shell script). - /bin/bash ./configure CONFIG_SHELL=/bin/bash +Unfortunately, this technique does not work for `CONFIG_SHELL' due to +an Autoconf bug. Until the bug is fixed you can use this workaround: -Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent -configuration-related scripts to be executed by `/bin/bash'. + CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash `configure' Invocation ====================== diff --git a/linphone/mediastreamer2/src/winsnd2.c b/linphone/mediastreamer2/src/winsnd2.c index 518458bd8..3377369ef 100755 --- a/linphone/mediastreamer2/src/winsnd2.c +++ b/linphone/mediastreamer2/src/winsnd2.c @@ -775,8 +775,7 @@ static void deactivate_removed_cards(MSSndCardManager *m){ const MSList *elem=ms_snd_card_manager_get_list(m); for(;elem!=NULL;elem=elem->next){ card=(MSSndCard*)elem->data; - if (strcmp(card->desc->driver_type, winsnd_card_desc.driver_type)==0 - && strcmp(card->name,name)==0){ + if (strcmp(card->desc->driver_type, winsnd_card_desc.driver_type)==0){ /*mark all cards as potentially removed, detect will check them immediately after */ WinSndCard *d=(WinSndCard*)card->data; if (d->removed) card->capabilities=0; @@ -789,8 +788,7 @@ static void mark_as_removed(MSSndCardManager *m){ const MSList *elem=ms_snd_card_manager_get_list(m); for(;elem!=NULL;elem=elem->next){ card=(MSSndCard*)elem->data; - if (strcmp(card->desc->driver_type, winsnd_card_desc.driver_type)==0 - && strcmp(card->name,name)==0){ + if (strcmp(card->desc->driver_type, winsnd_card_desc.driver_type)==0){ /*mark all cards as potentially removed, detect will check them immediately after */ WinSndCard *d=(WinSndCard*)card->data; d->removed=1; @@ -805,7 +803,7 @@ static void * new_device_polling_thread(void *ignore){ MSSndCardManager *m; /*check for new devices every 2 seconds*/ while(poller_running){ - ms_sleep(2000); + ms_sleep(2); if (poller_running){ m=ms_snd_card_manager_get(); if(!m) break; @@ -818,8 +816,8 @@ static void * new_device_polling_thread(void *ignore){ } static void stop_poller(){ - poller_running=false; - ms_thread_join(poller_thread); + poller_running=FALSE; + ms_thread_join(poller_thread,NULL); } static void winsndcard_detect(MSSndCardManager *m){