Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
        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;
        }
Ejemplo n.º 3
0
        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);
        }