aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx/Program.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx/Program.cs')
-rw-r--r--Ryujinx/Program.cs47
1 files changed, 27 insertions, 20 deletions
diff --git a/Ryujinx/Program.cs b/Ryujinx/Program.cs
index 96e9e8de..98b8d692 100644
--- a/Ryujinx/Program.cs
+++ b/Ryujinx/Program.cs
@@ -1,5 +1,6 @@
using Gtk;
using Ryujinx.Common.Logging;
+using Ryujinx.Configuration;
using Ryujinx.Profiler;
using Ryujinx.Ui;
using System;
@@ -16,9 +17,32 @@ namespace Ryujinx
string systemPath = Environment.GetEnvironmentVariable("Path", EnvironmentVariableTarget.Machine);
Environment.SetEnvironmentVariable("Path", $"{Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bin")};{systemPath}");
- AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
- AppDomain.CurrentDomain.ProcessExit += CurrentDomain_ProcessExit;
- GLib.ExceptionManager.UnhandledException += Glib_UnhandledException;
+ GLib.ExceptionManager.UnhandledException += Glib_UnhandledException;
+
+ // Initialize the configuration
+ ConfigurationState.Initialize();
+
+ // Initialize the logger system
+ LoggerModule.Initialize();
+
+ // Initialize Discord integration
+ DiscordIntegrationModule.Initialize();
+
+ string configurationPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.json");
+
+ // Now load the configuration as the other subsystems are now registered
+ if (File.Exists(configurationPath))
+ {
+ ConfigurationFileFormat configurationFileFormat = ConfigurationFileFormat.Load(configurationPath);
+ ConfigurationState.Instance.Load(configurationFileFormat);
+ }
+ else
+ {
+ // No configuration, we load the default values and save it on disk
+ ConfigurationState.Instance.LoadDefault();
+ ConfigurationState.Instance.ToFileFormat().SaveConfig(configurationPath);
+ }
+
Profile.Initialize();
@@ -42,23 +66,6 @@ namespace Ryujinx
Application.Run();
}
- private static void CurrentDomain_ProcessExit(object sender, EventArgs e)
- {
- Logger.Shutdown();
- }
-
- private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
- {
- Exception exception = e.ExceptionObject as Exception;
-
- Logger.PrintError(LogClass.Emulation, $"Unhandled exception caught: {exception}");
-
- if (e.IsTerminating)
- {
- Logger.Shutdown();
- }
- }
-
private static void Glib_UnhandledException(GLib.UnhandledExceptionArgs e)
{
Exception exception = e.ExceptionObject as Exception;