From 7b5476aca7567053bc9abf6ea65bb861dcca2769 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Mail=C3=A4nder?= Date: Tue, 10 Jun 2014 09:05:01 +0200 Subject: [PATCH 1/3] don't crash there yet when OpenGL version parsing fails closes #5595 --- OpenRA.Renderer.Sdl2/ErrorHandler.cs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/OpenRA.Renderer.Sdl2/ErrorHandler.cs b/OpenRA.Renderer.Sdl2/ErrorHandler.cs index 21988fda46..a9ad86d037 100644 --- a/OpenRA.Renderer.Sdl2/ErrorHandler.cs +++ b/OpenRA.Renderer.Sdl2/ErrorHandler.cs @@ -21,15 +21,20 @@ namespace OpenRA.Renderer.Sdl2 public static void CheckGlVersion() { var version = GL.GetString(StringName.Version).Split(' ')[0].Split('.'); - int major; - int.TryParse(version[0], out major); - int minor; - int.TryParse(version[1], out minor); + + int major = 0; + if (version.Length > 0) + int.TryParse(version[0], out major); + + int minor = 0; + if (version.Length > 1) + int.TryParse(version[1], out minor); + Console.WriteLine("Detected OpenGL version: {0}.{1}".F(major, minor)); OpenGLversion = new Version(major, minor); if (major < 2) { - WriteGraphicsLog("OpenRA requires OpenGL version 2.0 or greater."); + WriteGraphicsLog("OpenRA requires OpenGL version 2.0 or greater and detected {0}.{1}".F(major, minor)); throw new InvalidProgramException("OpenGL Version Error: See graphics.log for details."); } } From 2cc1d340788ab941c9abd3b9e2a805e4dd8505eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Mail=C3=A4nder?= Date: Sat, 14 Jun 2014 07:54:58 +0200 Subject: [PATCH 2/3] remove redundant OpenGL version check to avoid NREs --- OpenRA.Renderer.Sdl2/ErrorHandler.cs | 8 -------- 1 file changed, 8 deletions(-) diff --git a/OpenRA.Renderer.Sdl2/ErrorHandler.cs b/OpenRA.Renderer.Sdl2/ErrorHandler.cs index a9ad86d037..6d56e3284a 100644 --- a/OpenRA.Renderer.Sdl2/ErrorHandler.cs +++ b/OpenRA.Renderer.Sdl2/ErrorHandler.cs @@ -16,8 +16,6 @@ namespace OpenRA.Renderer.Sdl2 { public static class ErrorHandler { - static Version OpenGLversion; - public static void CheckGlVersion() { var version = GL.GetString(StringName.Version).Split(' ')[0].Split('.'); @@ -31,7 +29,6 @@ namespace OpenRA.Renderer.Sdl2 int.TryParse(version[1], out minor); Console.WriteLine("Detected OpenGL version: {0}.{1}".F(major, minor)); - OpenGLversion = new Version(major, minor); if (major < 2) { WriteGraphicsLog("OpenRA requires OpenGL version 2.0 or greater and detected {0}.{1}".F(major, minor)); @@ -63,11 +60,6 @@ namespace OpenRA.Renderer.Sdl2 } Log.Write("graphics", "Renderer: {0}", GL.GetString(StringName.Renderer)); Log.Write("graphics", "GL Version: {0}", GL.GetString(StringName.Version)); - if (OpenGLversion.Major < 2) - { - Log.Write("graphics", "Note: OpenRA requires OpenGL version 2.0+.\n" - +"Please update your graphics card drivers to the latest version.\n"); - } Log.Write("graphics", "Shader Version: {0}", GL.GetString(StringName.ShadingLanguageVersion)); Log.Write("graphics", "Available extensions:"); Log.Write("graphics", GL.GetString(StringName.Extensions)); From fa0e4c3d0d4cc9347d5be9cf76a17cfb88fd8ed2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Mail=C3=A4nder?= Date: Tue, 10 Jun 2014 09:14:47 +0200 Subject: [PATCH 3/3] what if there is no vendor info to remove from version string --- OpenRA.Renderer.Sdl2/ErrorHandler.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/OpenRA.Renderer.Sdl2/ErrorHandler.cs b/OpenRA.Renderer.Sdl2/ErrorHandler.cs index 6d56e3284a..a34774103d 100644 --- a/OpenRA.Renderer.Sdl2/ErrorHandler.cs +++ b/OpenRA.Renderer.Sdl2/ErrorHandler.cs @@ -18,7 +18,8 @@ namespace OpenRA.Renderer.Sdl2 { public static void CheckGlVersion() { - var version = GL.GetString(StringName.Version).Split(' ')[0].Split('.'); + var versionString = GL.GetString(StringName.Version); + var version = versionString.Contains(" ") ? versionString.Split(' ')[0].Split('.') : versionString.Split('.'); int major = 0; if (version.Length > 0)