void CloseDevice() { _sourceVoice?.Stop(PlayFlags.None, XAUDIO2_COMMIT_NOW); _sourceVoice?.FlushSourceBuffers(); _sourceVoice?.DestroyVoice(); _sourceVoice?.Dispose(); _xaudio2?.StopEngine(); _masteringVoice?.DestroyVoice(); _masteringVoice?.Dispose(); _xaudio2?.Dispose(); _sourceVoice = null; _masteringVoice = null; _xaudio2 = null; //if (_hidden.handle.IsAllocated) //{ // _hidden.handle.Free(); // _hidden.device = IntPtr.Zero; //} if (_hidden.mixbuf != null) { Marshal.FreeHGlobal((IntPtr)_hidden.mixbuf); _hidden.mixbuf = null; } _dev = null; }
private void Dispose(bool disposing) { if (!_disposed) { if (disposing) { StopFxSounds(); StopEnvSounds(); _currentBgm?.DestroyVoice(); _currentBgm?.Dispose(); _currentBgm = null; _fxLinkedSoundList.Clear(); _envLinkedSoundList.Clear(); UnloadAll(); _fxSubmixVoice.DestroyVoice(); _fxSubmixVoice.Dispose(); _envSubmixVoice.DestroyVoice(); _envSubmixVoice.Dispose(); _masteringVoice.DestroyVoice(); _masteringVoice.Dispose(); _xAudio2.Dispose(); } _disposed = true; } }
// Does someone actually need to call this if it only happens when the whole // game closes? And if so, who would make the call? internal static void Shutdown() { MasterVoice.DestroyVoice(); MasterVoice.Dispose(); Device.StopEngine(); Device.Dispose(); }
public void Dispose() { Stop(); for (int i = 0; i < audioBuffersRing.Length; i++) { Utilities.FreeMemory(memBuffers[i].Pointer); memBuffers[i].Pointer = IntPtr.Zero; } masteringVoice.DestroyVoice(); masteringVoice.Dispose(); masteringVoice = null; xaudio2.Dispose(); xaudio2 = null; }
protected void DestroyXAudio() { if (_masteringVoice != null) { if (!_masteringVoice.IsDisposed) { _masteringVoice.DestroyVoice(); _masteringVoice.Dispose(); } _masteringVoice = null; } if (_xAudio != null && !_xAudio.IsDisposed) { _xAudio.Dispose(); } _xAudio = null; }
private void DisposeCore() { if (x3DAudio != null) { x3DAudio = null; } if (ReverbVoice != null) { ReverbVoice.DestroyVoice(); ReverbVoice.Dispose(); ReverbVoice = null; reverb.Dispose(); reverb = null; } IsReverbEffectEnabled = false; if (MasteringVoice != null) { MasteringVoice.DestroyVoice(); MasteringVoice.Dispose(); MasteringVoice = null; } if (masteringLimiter != null) { masteringLimiter.Dispose(); masteringLimiter = null; } IsMasteringLimiterEnabled = false; if (Device != null) { Device.StopEngine(); Device.Dispose(); Device = null; } }
/// <summary> /// /// </summary> /// <param name="disposing"></param> protected override void Dispose(bool disposing) { if (disposing) { if (MasterVoice != null) { MasterVoice.DestroyVoice(); MasterVoice.Dispose(); MasterVoice = null; } if (Device != null) { Device.StopEngine(); Device.Dispose(); Device = null; } _device3DDirty = true; _speakers = Speakers.Stereo; } }