vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Thu Dec 6 12:46:42 2012 +0200| [4a1c30a05481c31cc6580954920a2f67fc432426] | committer: Rémi Denis-Courmont
mmdevice: improve handling of session disconnect event It could still be better. If the disconnection is unrecoverable, I suspect a flood of identical errors will be emitted continuously as the core keeps pushing audio buffers. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=4a1c30a05481c31cc6580954920a2f67fc432426 --- modules/audio_output/mmdevice.c | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/modules/audio_output/mmdevice.c b/modules/audio_output/mmdevice.c index 258e99b..8b8e9e2 100644 --- a/modules/audio_output/mmdevice.c +++ b/modules/audio_output/mmdevice.c @@ -428,12 +428,36 @@ vlc_AudioSessionEvents_OnStateChanged(IAudioSessionEvents *this, static STDMETHODIMP vlc_AudioSessionEvents_OnSessionDisconnected(IAudioSessionEvents *this, - AudioSessionDisconnectReason reason) + AudioSessionDisconnectReason reason) { aout_sys_t *sys = vlc_AudioSessionEvents_sys(this); audio_output_t *aout = sys->aout; - msg_Dbg(aout, "session disconnected: reason %d", reason); + switch (reason) + { + case DisconnectReasonDeviceRemoval: + msg_Warn(aout, "session disconnected: %s", "device removed"); + break; + case DisconnectReasonServerShutdown: + msg_Err(aout, "session disconnected: %s", "service stopped"); + return S_OK; + case DisconnectReasonFormatChanged: + msg_Warn(aout, "session disconnected: %s", "format changed"); + break; + case DisconnectReasonSessionLogoff: + msg_Err(aout, "session disconnected: %s", "user logged off"); + return S_OK; + case DisconnectReasonSessionDisconnected: + msg_Err(aout, "session disconnected: %s", "session disconnected"); + return S_OK; + case DisconnectReasonExclusiveModeOverride: + msg_Err(aout, "session disconnected: %s", "stream overriden"); + return S_OK; + default: + msg_Warn(aout, "session disconnected: unknown reason %d", reason); + return S_OK; + } + var_TriggerCallback(aout, "audio-device"); return S_OK; } _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
