(OnPlaybackStopped): NAudio occasionally throws an exception in Dispose.

This commit is contained in:
morkt 2015-12-10 19:59:10 +04:00
parent 69382f33b9
commit 9c6d59bf70

View File

@ -132,9 +132,17 @@ namespace GARbro.GUI
/// </summary>
protected override void OnClosing (CancelEventArgs e)
{
try
{
SaveSettings();
AudioDevice = null;
CurrentAudio = null;
SaveSettings();
}
catch (Exception X)
{
Trace.WriteLine (X.Message, "[OnClosing]");
Trace.WriteLine (X.StackTrace, "Stack trace");
}
base.OnClosing (e);
}
@ -843,9 +851,10 @@ namespace GARbro.GUI
get { return m_audio_device; }
set
{
if (m_audio_device != null)
m_audio_device.Dispose();
var old_value = m_audio_device;
m_audio_device = value;
if (old_value != null)
old_value.Dispose();
}
}
@ -855,9 +864,10 @@ namespace GARbro.GUI
get { return m_audio_input; }
set
{
if (m_audio_input != null)
m_audio_input.Dispose();
var old_value = m_audio_input;
m_audio_input = value;
if (old_value != null)
old_value.Dispose();
}
}
@ -903,10 +913,17 @@ namespace GARbro.GUI
}
private void OnPlaybackStopped (object sender, StoppedEventArgs e)
{
try
{
SetResourceText ("");
CurrentAudio = null;
}
catch (Exception X)
{
Trace.WriteLine (X.Message, "[OnPlaybackStopped]");
}
}
/// <summary>
/// Launch specified file.