diff --git a/BizHawk.Client.Common/BizHawk.Client.Common.csproj b/BizHawk.Client.Common/BizHawk.Client.Common.csproj index 4440583bbe..993c7638fd 100644 --- a/BizHawk.Client.Common/BizHawk.Client.Common.csproj +++ b/BizHawk.Client.Common/BizHawk.Client.Common.csproj @@ -149,6 +149,7 @@ + @@ -316,6 +317,10 @@ {f51946ea-827f-4d82-b841-1f2f6d060312} BizHawk.Emulation.DiscSystem + + {337ca23e-65e7-44e1-9411-97ee08bb8116} + BizHawk.Bizware.BizwareGL.GdiPlus + {5160CFB1-5389-47C1-B7F6-8A0DC97641EE} BizHawk.Bizware.BizwareGL.OpenTK diff --git a/BizHawk.Client.Common/Extensions.cs b/BizHawk.Client.Common/Extensions.cs new file mode 100644 index 0000000000..02fae5f4af --- /dev/null +++ b/BizHawk.Client.Common/Extensions.cs @@ -0,0 +1,23 @@ +using System; +using BizHawk.Bizware.BizwareGL; +using BizHawk.Bizware.BizwareGL.Drivers.GdiPlus; +using BizHawk.Bizware.BizwareGL.Drivers.OpenTK; +using BizHawk.Bizware.BizwareGL.Drivers.SlimDX; + +namespace BizHawk.Client.Common +{ + public static class Extensions + { + public static IGuiRenderer CreateRenderer(this IGL gl) + { + if (gl is IGL_TK) + return new GuiRenderer(gl); + if (gl is IGL_SlimDX9) + return new GuiRenderer(gl); + if (gl is IGL_GdiPlus) + return new GDIPlusGuiRenderer((IGL_GdiPlus)gl); + + throw new NotSupportedException(); + } + } +} diff --git a/BizHawk.Client.EmuHawk/DisplayManager/DisplayManager.cs b/BizHawk.Client.EmuHawk/DisplayManager/DisplayManager.cs index f6b91a9f52..c2820aa138 100644 --- a/BizHawk.Client.EmuHawk/DisplayManager/DisplayManager.cs +++ b/BizHawk.Client.EmuHawk/DisplayManager/DisplayManager.cs @@ -46,12 +46,7 @@ namespace BizHawk.Client.EmuHawk //it's sort of important for these to be initialized to something nonzero currEmuWidth = currEmuHeight = 1; - if (GL is BizHawk.Bizware.BizwareGL.Drivers.OpenTK.IGL_TK) - Renderer = new GuiRenderer(GL); - else if (GL is BizHawk.Bizware.BizwareGL.Drivers.SlimDX.IGL_SlimDX9) - Renderer = new GuiRenderer(GL); - else - Renderer = new GDIPlusGuiRenderer((BizHawk.Bizware.BizwareGL.Drivers.GdiPlus.IGL_GdiPlus)GL); + Renderer = GL.CreateRenderer(); VideoTextureFrugalizer = new TextureFrugalizer(GL); diff --git a/BizHawk.Client.EmuHawk/Program.cs b/BizHawk.Client.EmuHawk/Program.cs index f9c4d91416..57fd3accc5 100644 --- a/BizHawk.Client.EmuHawk/Program.cs +++ b/BizHawk.Client.EmuHawk/Program.cs @@ -172,17 +172,9 @@ namespace BizHawk.Client.EmuHawk } //try creating a GUI Renderer. If that doesn't succeed. we fallback - //TODO - need a factory for the GUI Renderer, I hate pasting this code try { - BizHawk.Bizware.BizwareGL.IGuiRenderer Renderer; - if (GlobalWin.GL is BizHawk.Bizware.BizwareGL.Drivers.OpenTK.IGL_TK) - Renderer = new BizHawk.Bizware.BizwareGL.GuiRenderer(GlobalWin.GL); - else if (GlobalWin.GL is BizHawk.Bizware.BizwareGL.Drivers.SlimDX.IGL_SlimDX9) - Renderer = new BizHawk.Bizware.BizwareGL.GuiRenderer(GlobalWin.GL); - else - Renderer = new BizHawk.Bizware.BizwareGL.Drivers.GdiPlus.GDIPlusGuiRenderer((BizHawk.Bizware.BizwareGL.Drivers.GdiPlus.IGL_GdiPlus)GlobalWin.GL); - Renderer.Dispose(); + using (GlobalWin.GL.CreateRenderer()) { } } catch(Exception ex) { diff --git a/BizHawk.Client.MultiHawk/DisplayManager/DisplayManager.cs b/BizHawk.Client.MultiHawk/DisplayManager/DisplayManager.cs index 43754224e7..ce304a8d0d 100644 --- a/BizHawk.Client.MultiHawk/DisplayManager/DisplayManager.cs +++ b/BizHawk.Client.MultiHawk/DisplayManager/DisplayManager.cs @@ -47,12 +47,7 @@ namespace BizHawk.Client.MultiHawk //it's sort of important for these to be initialized to something nonzero currEmuWidth = currEmuHeight = 1; - if (GL is BizHawk.Bizware.BizwareGL.Drivers.OpenTK.IGL_TK) - Renderer = new GuiRenderer(GL); - else if (GL is BizHawk.Bizware.BizwareGL.Drivers.SlimDX.IGL_SlimDX9) - Renderer = new GuiRenderer(GL); - else - Renderer = new GDIPlusGuiRenderer((BizHawk.Bizware.BizwareGL.Drivers.GdiPlus.IGL_GdiPlus)GL); + Renderer = GL.CreateRenderer(); VideoTextureFrugalizer = new TextureFrugalizer(GL);