diff --git a/Control/Region.cs b/Control/Region.cs index 76e59443..a25dd91b 100644 --- a/Control/Region.cs +++ b/Control/Region.cs @@ -167,6 +167,9 @@ private void EvalOptions() // Store the current sequence int temp = _currentSequence; + // Before we can try to set the next media node, we need to stop any currently running Audio + StopAudio(); + // Set the next media node for this panel if (!SetNextMediaNodeInOptions()) { @@ -662,7 +665,7 @@ void audio_DurationElapsedEvent(int filesPlayed) { try { - StopMedia(_options.Audio[_audioSequence - 1], true); + StopMedia(_options.Audio[_audioSequence - 1]); } catch (Exception ex) { @@ -678,14 +681,6 @@ void audio_DurationElapsedEvent(int filesPlayed) /// /// private void StopMedia(Media media) - { - StopMedia(media, false); - } - - /// - /// Stop the provided media - /// - private void StopMedia(Media media, bool audio) { Trace.WriteLine(new LogMessage("Region - Stop Media", "Stopping media"), LogType.Audit.ToString()); @@ -705,13 +700,19 @@ private void StopMedia(Media media, bool audio) { Trace.WriteLine(new LogMessage("Region - Stop Media", "Unable to dispose. Ex = " + ex.Message), LogType.Audit.ToString()); } + } - // Stop any associated audio - if (!audio && _options.Audio.Count >= _audioSequence) + /// + /// Stop Audio + /// + private void StopAudio() + { + // Stop the currently playing audio (if there is any) + if (_options.Audio.Count > 0) { try { - StopMedia(_options.Audio[_audioSequence - 1], true); + StopMedia(_options.Audio[_audioSequence - 1]); } catch (Exception ex) { @@ -794,6 +795,9 @@ public void Clear() { try { + // Stop Audio + StopAudio(); + // Stop the current media item if (_media != null) StopMedia(_media);