Re #1204:
* 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:
parent
48687d7a6b
commit
aa3c0d393f
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue