diff --git a/OpenRA.Game/Game.cs b/OpenRA.Game/Game.cs index 406c755a2e..e31eb60907 100644 --- a/OpenRA.Game/Game.cs +++ b/OpenRA.Game/Game.cs @@ -285,6 +285,7 @@ namespace OpenRA Log.AddChannel("sync", "syncreport.log"); Log.AddChannel("server", "server.log"); Log.AddChannel("sound", "sound.log"); + Log.AddChannel("graphics", "graphics.log"); if (Settings.Server.DiscoverNatDevices) UPnP.TryNatDiscovery(); @@ -295,14 +296,34 @@ namespace OpenRA } FileSystem.Mount("."); // Needed to access shaders - Renderer.Initialize( Game.Settings.Graphics.Mode ); + try + { + Renderer.Initialize(Game.Settings.Graphics.Mode); + } + catch (Exception e) + { + Log.Write("graphics", "{0}", e); + Console.WriteLine("Renderer initialization failed. Fallback in place. Check graphics.log for details."); + Settings.Graphics.Renderer = new GraphicSettings().Renderer; + Renderer.Initialize(Settings.Graphics.Mode); + } Renderer = new Renderer(); + try + { + Sound.Create(Settings.Sound.Engine); + } + catch (Exception e) + { + Log.Write("sound", "{0}", e); + Console.WriteLine("Creating the sound engine failed. Fallback in place. Check sound.log for details."); + Settings.Sound.Engine = "Null"; + Sound.Create(Settings.Sound.Engine); + } + Console.WriteLine("Available mods:"); foreach(var mod in Mod.AllMods) Console.WriteLine("\t{0}: {1} ({2})", mod.Key, mod.Value.Title, mod.Value.Version); - - Sound.Create(Settings.Sound.Engine); InitializeWithMods(Settings.Game.Mods); if (Settings.Server.DiscoverNatDevices) diff --git a/OpenRA.Game/Graphics/Renderer.cs b/OpenRA.Game/Graphics/Renderer.cs index f75316a2d9..417d616481 100644 --- a/OpenRA.Game/Graphics/Renderer.cs +++ b/OpenRA.Game/Graphics/Renderer.cs @@ -137,10 +137,10 @@ namespace OpenRA.Graphics FixOSX(); var resolution = GetResolution(windowMode); - - string renderer = Game.Settings.Server.Dedicated ? "Null" : Game.Settings.Graphics.Renderer; + + var renderer = Game.Settings.Server.Dedicated ? "Null" : Game.Settings.Graphics.Renderer; var rendererPath = Path.GetFullPath("OpenRA.Renderer.{0}.dll".F(renderer)); - + device = CreateDevice(Assembly.LoadFile(rendererPath), resolution.Width, resolution.Height, windowMode); } diff --git a/OpenRA.Renderer.SdlCommon/ErrorHandler.cs b/OpenRA.Renderer.SdlCommon/ErrorHandler.cs index 912b96e891..2e140f2f53 100644 --- a/OpenRA.Renderer.SdlCommon/ErrorHandler.cs +++ b/OpenRA.Renderer.SdlCommon/ErrorHandler.cs @@ -48,7 +48,6 @@ namespace OpenRA.Renderer.SdlCommon public static void WriteGraphicsLog(string message) { - Log.AddChannel("graphics", "graphics.log"); Log.Write("graphics", message); Log.Write("graphics", ""); Log.Write("graphics", "OpenGL Information:");