vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Wed Apr 24 22:08:43 2013 +0300| [671d44d0e0745b6fb9bbd7daa80333c3f8b676a5] | committer: Rémi Denis-Courmont
DirectSound: implement device_select (fixes #8492) > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=671d44d0e0745b6fb9bbd7daa80333c3f8b676a5 --- modules/audio_output/directx.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/modules/audio_output/directx.c b/modules/audio_output/directx.c index e3b9cd1..36ffe89 100644 --- a/modules/audio_output/directx.c +++ b/modules/audio_output/directx.c @@ -582,17 +582,17 @@ static int InitDirectSound( audio_output_t *p_aout ) goto error; } - char *dev = var_InheritString( p_aout, "directx-audio-device" ); + char *dev = var_GetNonEmptyString( p_aout, "directx-audio-device" ); if( dev != NULL ) { LPOLESTR lpsz = ToWide( dev ); + free( dev ); if( SUCCEEDED( IIDFromString( lpsz, &guid ) ) ) p_guid = &guid; else msg_Err( p_aout, "bad device GUID: %ls", lpsz ); free( lpsz ); - free( dev ); } /* Create the direct sound object */ @@ -959,6 +959,14 @@ out: return list.count; } +static int DeviceSelect (audio_output_t *aout, const char *id) +{ + var_SetString(aout, "directx-audio-device", (id != NULL) ? id : ""); + aout_DeviceReport (aout, id); + aout_RestartRequest (aout, AOUT_RESTART_OUTPUT); + return 0; +} + static int Open(vlc_object_t *obj) { audio_output_t *aout = (audio_output_t *)obj; @@ -979,6 +987,7 @@ static int Open(vlc_object_t *obj) aout->stop = Stop; aout->volume_set = VolumeSet; aout->mute_set = MuteSet; + aout->device_select = DeviceSelect; /* Volume */ sys->volume.volume = var_InheritFloat(aout, "directx-volume"); @@ -1008,6 +1017,7 @@ static int Open(vlc_object_t *obj) free(names); free(ids); } + var_Create(aout, "directx-audio-device", VLC_VAR_STRING|VLC_VAR_DOINHERIT); return VLC_SUCCESS; } @@ -1016,6 +1026,7 @@ static void Close(vlc_object_t *obj) audio_output_t *aout = (audio_output_t *)obj; aout_sys_t *sys = aout->sys; + var_Destroy(aout, "directx-audio-device"); CloseHandle(sys->hnotify_evt); FreeLibrary(sys->hdsound_dll); /* free DSOUND.DLL */ free(sys); _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
