Here, the DSEnumCallback documentation seems wrong or misleading, it needs LPCWSTR with DirectSoundEnumerateW
http://msdn.microsoft.com/en-us/library/microsoft.directx_sdk.reference.dsenumcallback%28VS.85%29.aspx
Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
/*****************************************************************************
* CallBackDirectSoundEnum: callback to enumerate available devices
*****************************************************************************/
/*****************************************************************************
* CallBackDirectSoundEnum: callback to enumerate available devices
*****************************************************************************/
-static int CALLBACK CallBackDirectSoundEnum( LPGUID p_guid, LPCSTR psz_desc,
- LPCSTR psz_mod, LPVOID _p_aout )
+static int CALLBACK CallBackDirectSoundEnum( LPGUID p_guid, LPCWSTR psz_desc,
+ LPCWSTR psz_mod, LPVOID _p_aout )
{
VLC_UNUSED( psz_mod );
aout_instance_t *p_aout = (aout_instance_t *)_p_aout;
{
VLC_UNUSED( psz_mod );
aout_instance_t *p_aout = (aout_instance_t *)_p_aout;
- msg_Dbg( p_aout, "found device: %s", psz_desc );
+ char *psz_device = FromWide( psz_desc );
+ msg_Dbg( p_aout, "found device: %s", psz_device );
- if( p_aout->output.p_sys->psz_device && !strcmp(p_aout->output.p_sys->psz_device, psz_desc) && p_guid )
+ if( p_aout->output.p_sys->psz_device && !strcmp(p_aout->output.p_sys->psz_device, psz_device) && p_guid )
{
/* Use the device corresponding to psz_device */
p_aout->output.p_sys->p_device_guid = malloc( sizeof( GUID ) );
*p_aout->output.p_sys->p_device_guid = *p_guid;
{
/* Use the device corresponding to psz_device */
p_aout->output.p_sys->p_device_guid = malloc( sizeof( GUID ) );
*p_aout->output.p_sys->p_device_guid = *p_guid;
- msg_Dbg( p_aout, "using device: %s", psz_desc );
+ msg_Dbg( p_aout, "using device: %s", psz_device );
}
else
{
/* If no default device has been selected, chose the first one */
if( !p_aout->output.p_sys->psz_device && p_guid )
{
}
else
{
/* If no default device has been selected, chose the first one */
if( !p_aout->output.p_sys->psz_device && p_guid )
{
- p_aout->output.p_sys->psz_device = strdup( psz_desc );
+ p_aout->output.p_sys->psz_device = strdup( psz_device );
p_aout->output.p_sys->p_device_guid = malloc( sizeof( GUID ) );
*p_aout->output.p_sys->p_device_guid = *p_guid;
p_aout->output.p_sys->p_device_guid = malloc( sizeof( GUID ) );
*p_aout->output.p_sys->p_device_guid = *p_guid;
- msg_Dbg( p_aout, "using device: %s", psz_desc );
+ msg_Dbg( p_aout, "using device: %s", psz_device );
static int InitDirectSound( aout_instance_t *p_aout )
{
HRESULT (WINAPI *OurDirectSoundCreate)(LPGUID, LPDIRECTSOUND *, LPUNKNOWN);
static int InitDirectSound( aout_instance_t *p_aout )
{
HRESULT (WINAPI *OurDirectSoundCreate)(LPGUID, LPDIRECTSOUND *, LPUNKNOWN);
- HRESULT (WINAPI *OurDirectSoundEnumerate)(LPDSENUMCALLBACK, LPVOID);
+ HRESULT (WINAPI *OurDirectSoundEnumerate)(LPDSENUMCALLBACKW, LPVOID);
p_aout->output.p_sys->hdsound_dll = LoadLibrary("DSOUND.DLL");
if( p_aout->output.p_sys->hdsound_dll == NULL )
p_aout->output.p_sys->hdsound_dll = LoadLibrary("DSOUND.DLL");
if( p_aout->output.p_sys->hdsound_dll == NULL )
/*****************************************************************************
* CallBackConfigNBEnum: callback to get the number of available devices
*****************************************************************************/
/*****************************************************************************
* CallBackConfigNBEnum: callback to get the number of available devices
*****************************************************************************/
-static int CALLBACK CallBackConfigNBEnum( LPGUID p_guid, LPCSTR psz_desc,
- LPCSTR psz_mod, LPVOID p_nb )
+static int CALLBACK CallBackConfigNBEnum( LPGUID p_guid, LPCWSTR psz_desc,
+ LPCWSTR psz_mod, LPVOID p_nb )
{
VLC_UNUSED( psz_mod ); VLC_UNUSED( psz_desc ); VLC_UNUSED( p_guid );
{
VLC_UNUSED( psz_mod ); VLC_UNUSED( psz_desc ); VLC_UNUSED( p_guid );
/*****************************************************************************
* CallBackConfigEnum: callback to add available devices to the preferences list
*****************************************************************************/
/*****************************************************************************
* CallBackConfigEnum: callback to add available devices to the preferences list
*****************************************************************************/
-static int CALLBACK CallBackConfigEnum( LPGUID p_guid, LPCSTR psz_desc,
- LPCSTR psz_mod, LPVOID _p_item )
+static int CALLBACK CallBackConfigEnum( LPGUID p_guid, LPCWSTR psz_desc,
+ LPCWSTR psz_mod, LPVOID _p_item )
- VLC_UNUSED( psz_mod );
- VLC_UNUSED( p_guid );
+ VLC_UNUSED( psz_mod ); VLC_UNUSED( p_guid );
module_config_t *p_item = (module_config_t *) _p_item;
module_config_t *p_item = (module_config_t *) _p_item;
- p_item->ppsz_list[p_item->i_list] = FromLocaleDup(psz_desc);
- p_item->ppsz_list_text[p_item->i_list] = FromLocaleDup(psz_desc);
+ p_item->ppsz_list[p_item->i_list] = FromWide( psz_desc );
+ p_item->ppsz_list_text[p_item->i_list] = FromWide( psz_desc );
p_item->i_list = p_item->i_list +1;
return 1;
}
p_item->i_list = p_item->i_list +1;
return 1;
}
vlc_value_t newval, vlc_value_t oldval, void *data )
{
VLC_UNUSED( newval ); VLC_UNUSED( oldval ); VLC_UNUSED( data );
vlc_value_t newval, vlc_value_t oldval, void *data )
{
VLC_UNUSED( newval ); VLC_UNUSED( oldval ); VLC_UNUSED( data );
module_config_t *p_item = config_FindConfig( p_this, psz_name );
if( !p_item ) return VLC_SUCCESS;
/* Clear-up the current list */
if( p_item->i_list )
{
module_config_t *p_item = config_FindConfig( p_this, psz_name );
if( !p_item ) return VLC_SUCCESS;
/* Clear-up the current list */
if( p_item->i_list )
{
- int i;
- for( i = 0; i < p_item->i_list; i++ )
+ for( int i = 0; i < p_item->i_list; i++ )
{
free((char *)(p_item->ppsz_list[i]) );
free((char *)(p_item->ppsz_list_text[i]) );
}
}
{
free((char *)(p_item->ppsz_list[i]) );
free((char *)(p_item->ppsz_list_text[i]) );
}
}
- HRESULT (WINAPI *OurDirectSoundEnumerate)(LPDSENUMCALLBACK, LPVOID);
+ HRESULT (WINAPI *OurDirectSoundEnumerate)(LPDSENUMCALLBACKW, LPVOID);
HANDLE hdsound_dll = LoadLibrary("DSOUND.DLL");
if( hdsound_dll == NULL )
HANDLE hdsound_dll = LoadLibrary("DSOUND.DLL");
if( hdsound_dll == NULL )
/* Get DirectSoundEnumerate */
OurDirectSoundEnumerate = (void *)
/* Get DirectSoundEnumerate */
OurDirectSoundEnumerate = (void *)
- GetProcAddress( hdsound_dll,
- "DirectSoundEnumerateW" );
+ GetProcAddress( hdsound_dll, "DirectSoundEnumerateW" );
int nb_devices = 0;
OurDirectSoundEnumerate(CallBackConfigNBEnum, &nb_devices);
msg_Dbg(p_this,"found %d devices", nb_devices);
int nb_devices = 0;
OurDirectSoundEnumerate(CallBackConfigNBEnum, &nb_devices);
msg_Dbg(p_this,"found %d devices", nb_devices);