diff --git a/SDRSharp/MainForm.cs b/SDRSharp/MainForm.cs index 790b585..4e64494 100644 --- a/SDRSharp/MainForm.cs +++ b/SDRSharp/MainForm.cs @@ -396,11 +396,20 @@ public MainForm() _streamControl = new StreamControl(_streamHookManager); InitializeComponent(); - InitializeGUI(); - InitialiseSharpPlugins(); } - private void InitializeGUI() + public bool Initialize() + { + if (InitializeGUI()) + { + InitialiseSharpPlugins(); + return true; + } + + return false; + } + + private bool InitializeGUI() { _initializing = true; @@ -427,7 +436,20 @@ private void InitializeGUI() var defaultIndex = 0; var savedIndex = -1; - var devices = AudioDevice.GetDevices(DeviceDirection.Input); + List devices; + try + { + devices = AudioDevice.GetDevices(DeviceDirection.Input); + } + catch(TypeInitializationException tEx) + { + MessageBox.Show( + $"{ this.Text } needs the PortAudio v19 library to work:\n{ tEx.Message }\n\nInstall and configure PortAudio first.", $"Could not start { this.Text }", + MessageBoxButtons.OK, MessageBoxIcon.Information); + + return false; + } + var savedDeviceName = Utils.GetStringSetting("inputDevice", string.Empty); for (var i = 0; i < devices.Count; i++) { @@ -681,6 +703,7 @@ private void InitializeGUI() #endregion _initializing = false; + return true; } private void ExtIO_LOFreqChanged(int frequency) diff --git a/SDRSharp/Program.cs b/SDRSharp/Program.cs index 4aec44d..d8157f3 100644 --- a/SDRSharp/Program.cs +++ b/SDRSharp/Program.cs @@ -25,7 +25,11 @@ static void Main() Control.CheckForIllegalCrossThreadCalls = false; Application.EnableVisualStyles(); - Application.Run(new MainForm()); + var mainForm = new MainForm(); + if (mainForm.Initialize()) + { + Application.Run(mainForm); + } if (Environment.OSVersion.Platform == PlatformID.Win32Windows || Environment.OSVersion.Platform == PlatformID.Win32NT) {