Beispiel #1
0
        /// <summary>
        /// Ends and discards this playback session.
        /// </summary>
        public void End(bool waitForFadeOut)
        {
            lock (_syncObj)
            {
                if (_state == SessionState.Reset)
                {
                    return;
                }
                _state = SessionState.Reset;
            }
            _controller.OutputDeviceManager.StopDevice(waitForFadeOut);

            _controller.OutputDeviceManager.ResetInputStream();
            _playbackBuffer.ResetInputStream();
            _winAmpDSPProcessor.ResetInputStream();
            _vstProcessor.ResetInputStream();
            _upDownMixer.ResetInputStream();

            lock (_syncObj)
            {
                _controller.ScheduleDisposeObject_Async(_outputStream);
                _outputStream = null;
                _controller.ScheduleDisposeObject_Async(_currentInputSource);
                _currentInputSource = null;
            }
        }