unsafe protected override void ShutdownLibrary() { if (thread != null) { needAbortThread = true; Thread.Sleep(50); thread.Abort(); } if (realChannels != null) { realChannels.Clear(); realChannels = null; } if (directSound != null) { IDirectSound8.Release(directSound); directSound = null; } if (criticalSection != null) { criticalSection.Dispose(); criticalSection = null; } instance = null; }
protected override void ShutdownLibrary() { if (thread != null) { needAbortThread = true; Thread.Sleep(50); thread.Abort(); } if (realChannels != null) { foreach (OpenALRealChannel realChannel in realChannels) { if (realChannel.alSource != 0) { Al.alDeleteSources(1, ref realChannel.alSource); realChannel.alSource = 0; } } } try { Alc.alcMakeContextCurrent(IntPtr.Zero); Alc.alcDestroyContext(alContext); Alc.alcCloseDevice(alDevice); } catch { } if (realChannels != null) { realChannels.Clear(); realChannels = null; } if (criticalSection != null) { criticalSection.Dispose(); criticalSection = null; } instance = null; }
public void Dispose() { try { if (criticalSection != null) { criticalSection.Enter(); } Pause = true; if (videoDriver != null) { videoDriver.Dispose(); videoDriver = null; } if (audioDriver != null) { audioDriver.Dispose(); audioDriver = null; } if (oggSyncState != null) { oggSyncState.Dispose(); oggSyncState = null; } if (oggPage != null) { oggPage.Dispose(); oggPage = null; } if (stream != null) { stream.Dispose(); stream = null; } } catch (Exception ex) { Log.Error("OggFile: Exception: " + ex.ToString()); } finally { if (criticalSection != null) { criticalSection.Leave(); } } if (criticalSection != null) { criticalSection.Dispose(); criticalSection = null; } GC.SuppressFinalize(this); }