diff options
author | Liong Sauw Ming <ming@teluu.com> | 2011-03-15 03:16:33 +0000 |
---|---|---|
committer | Liong Sauw Ming <ming@teluu.com> | 2011-03-15 03:16:33 +0000 |
commit | 477ebed76f7657565ef181da813ea2f7b409d24b (patch) | |
tree | c97fc53261966f3e3574da466fe16136aa61c25f /pjmedia/src | |
parent | 324dadd8306be077d924b6901eae69b2e164fd91 (diff) |
Re #1204:
* Update audio device's list after refreshing the device.
* Fixed WMME macro.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3440 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjmedia/src')
-rw-r--r-- | pjmedia/src/pjmedia-audiodev/audiodev.c | 30 | ||||
-rw-r--r-- | pjmedia/src/pjmedia-audiodev/wmme_dev.c | 2 |
2 files changed, 19 insertions, 13 deletions
diff --git a/pjmedia/src/pjmedia-audiodev/audiodev.c b/pjmedia/src/pjmedia-audiodev/audiodev.c index b9d960fe..26288616 100644 --- a/pjmedia/src/pjmedia-audiodev/audiodev.c +++ b/pjmedia/src/pjmedia-audiodev/audiodev.c @@ -250,23 +250,27 @@ PJ_DEF(pj_status_t) pjmedia_aud_param_get_cap( const pjmedia_aud_param *param, } /* Internal: init driver */ -static pj_status_t init_driver(unsigned drv_idx) +static pj_status_t init_driver(unsigned drv_idx, pj_bool_t refresh) { struct driver *drv = &aud_subsys.drv[drv_idx]; pjmedia_aud_dev_factory *f; unsigned i, dev_cnt; pj_status_t status; - /* Create the factory */ - f = (*drv->create)(aud_subsys.pf); - if (!f) - return PJ_EUNKNOWN; + if (!refresh) { + /* Create the factory */ + f = (*drv->create)(aud_subsys.pf); + if (!f) + return PJ_EUNKNOWN; - /* Call factory->init() */ - status = f->op->init(f); - if (status != PJ_SUCCESS) { - f->op->destroy(f); - return status; + /* Call factory->init() */ + status = f->op->init(f); + if (status != PJ_SUCCESS) { + f->op->destroy(f); + return status; + } + } else { + f = drv->f; } /* Get number of devices */ @@ -407,7 +411,7 @@ PJ_DEF(pj_status_t) pjmedia_aud_subsys_init(pj_pool_factory *pf) /* Initialize each factory and build the device ID list */ for (i=0; i<aud_subsys.drv_cnt; ++i) { - status = init_driver(i); + status = init_driver(i, PJ_FALSE); if (status != PJ_SUCCESS) { deinit_driver(i); continue; @@ -427,7 +431,7 @@ pjmedia_aud_register_factory(pjmedia_aud_dev_factory_create_func_ptr adf) return PJMEDIA_EAUD_INIT; aud_subsys.drv[aud_subsys.drv_cnt].create = adf; - status = init_driver(aud_subsys.drv_cnt); + status = init_driver(aud_subsys.drv_cnt, PJ_FALSE); if (status == PJ_SUCCESS) { aud_subsys.drv_cnt++; } else { @@ -496,6 +500,7 @@ PJ_DEF(pj_status_t) pjmedia_aud_dev_refresh(void) { unsigned i; + aud_subsys.dev_cnt = 0; for (i=0; i<aud_subsys.drv_cnt; ++i) { struct driver *drv = &aud_subsys.drv[i]; @@ -506,6 +511,7 @@ PJ_DEF(pj_status_t) pjmedia_aud_dev_refresh(void) "list for %s", drv->name)); } } + init_driver(i, PJ_TRUE); } return PJ_SUCCESS; } diff --git a/pjmedia/src/pjmedia-audiodev/wmme_dev.c b/pjmedia/src/pjmedia-audiodev/wmme_dev.c index 095aead9..7358daf4 100644 --- a/pjmedia/src/pjmedia-audiodev/wmme_dev.c +++ b/pjmedia/src/pjmedia-audiodev/wmme_dev.c @@ -39,7 +39,7 @@ #endif #ifndef PJMEDIA_WMME_DEV_USE_MMDEVICE_API -# define PJMEDIAWMME_DEV_USE_MMDEVICE_API \ +# define PJMEDIA_WMME_DEV_USE_MMDEVICE_API \ (defined(_WIN32_WINNT) && (_WIN32_WINNT>=0x0600)) #endif |