public void Dispose() { if (_isDisposed) { return; } _isDisposed = true; lock (_updateLock) { if (_updateTimerSubscription != null) { _updateTimerSubscription.Dispose(); _updateTimerSubscription = null; } if (_audioTrack != null) { try { _audioTrack.Stop(); _audioTrack.Dispose(); _audioTrack = null; } catch (Exception e) { GameLog.Client.Audio.Error(e); } } foreach (var track in _endingTracks) { try { track.Stop(); track.Dispose(); } catch (Exception e) { GameLog.Client.Audio.Error(e); } } _endingTracks.Clear(); if (_channelGroup != null) { _channelGroup.Dispose(); _channelGroup = null; } _engine = null; } }
private void OnTrackEnd(IAudioTrack track) { lock (_updateLock) { try { track.Dispose(); _audioTracks.Remove(track); } catch (Exception e) { GameLog.Client.Audio.Error(e); } } }
private void OnTrackEnd(IAudioTrack track) { try { lock (_updateLock) { try { track.Dispose(); } catch (Exception e) { GameLog.Client.Audio.Error(e); } if (track == _audioTrack) { _audioTrack = null; Next(); } else { _endingTracks.Remove(track); } if (_audioTrack == null && _endingTracks.Count == 0) { if (_updateTimerSubscription != null) { _updateTimerSubscription.Dispose(); _updateTimerSubscription = null; } } } } catch (Exception e) { GameLog.Client.Audio.Error(e); } }
public void RemoveAudioTrack(IAudioTrack audioTrack) { _tracks.Remove(audioTrack); audioTrack.Dispose(); }