* Update audio device's list after refreshing the device.
 * Fixed WMME macro.



git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@3440 74dad513-b988-da41-8d7b-12977e46ad98
This commit is contained in:
Sauw Ming 2011-03-15 03:16:33 +00:00
parent 48687d7a6b
commit aa3c0d393f
2 changed files with 19 additions and 13 deletions

View File

@ -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;
}

View File

@ -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