/* added -> */ public void Dispose() { if (_AudioSessionControl != null) { if (_audioSessionEvents != null) { Marshal.ThrowExceptionForHR(_AudioSessionControl.UnregisterAudioSessionNotification(_audioSessionEvents)); } Marshal.ReleaseComObject(_AudioSessionControl); _audioSessionEvents = null; } }
internal AudioSessionControl(IAudioSessionControl2 realAudioSessionControl) { IAudioMeterInformation _meters = realAudioSessionControl as IAudioMeterInformation; ISimpleAudioVolume _volume = realAudioSessionControl as ISimpleAudioVolume; if (_meters != null) _AudioMeterInformation = new CoreAudioApi.AudioMeterInformation(_meters); if (_volume != null) _SimpleAudioVolume = new SimpleAudioVolume(_volume); _AudioSessionControl = realAudioSessionControl; /* added -> */ _audioSessionEvents = new AudioSessionEvents(this); Marshal.ThrowExceptionForHR(_AudioSessionControl.RegisterAudioSessionNotification(_audioSessionEvents)); /* <- added */ }
internal AudioSessionControl(IAudioSessionControl2 realAudioSessionControl) { IAudioMeterInformation _meters = realAudioSessionControl as IAudioMeterInformation; ISimpleAudioVolume _volume = realAudioSessionControl as ISimpleAudioVolume; if (_meters != null) { _AudioMeterInformation = new CoreAudioApi.AudioMeterInformation(_meters); } if (_volume != null) { _SimpleAudioVolume = new SimpleAudioVolume(_volume); } _AudioSessionControl = realAudioSessionControl; /* added -> */ _audioSessionEvents = new AudioSessionEvents(this); Marshal.ThrowExceptionForHR(_AudioSessionControl.RegisterAudioSessionNotification(_audioSessionEvents)); /* <- added */ }
/* added -> */ public void Dispose() { if (_AudioSessionControl != null) { if(_audioSessionEvents != null) Marshal.ThrowExceptionForHR(_AudioSessionControl.UnregisterAudioSessionNotification(_audioSessionEvents)); Marshal.ReleaseComObject(_AudioSessionControl); _audioSessionEvents = null; } }