From 4f4dd33c1388f1d2903500715047277221b7b511 Mon Sep 17 00:00:00 2001 From: kanato Date: Thu, 5 Feb 2009 04:35:15 +0000 Subject: [PATCH] Fix up display capturing. --- .../Platform/MacOS/QuartzDisplayDeviceDriver.cs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/Source/OpenTK/Platform/MacOS/QuartzDisplayDeviceDriver.cs b/Source/OpenTK/Platform/MacOS/QuartzDisplayDeviceDriver.cs index 15e390d3..7616a206 100644 --- a/Source/OpenTK/Platform/MacOS/QuartzDisplayDeviceDriver.cs +++ b/Source/OpenTK/Platform/MacOS/QuartzDisplayDeviceDriver.cs @@ -104,7 +104,7 @@ namespace OpenTK.Platform.MacOS #region IDisplayDeviceDriver Members Dictionary storedModes = new Dictionary(); - + List displaysCaptured = new List(); public bool TryChangeResolution(DisplayDevice device, DisplayResolution resolution) { @@ -131,9 +131,14 @@ namespace OpenTK.Platform.MacOS if (width == resolution.Width && height == resolution.Height && bpp == resolution.BitsPerPixel && - freq == resolution.RefreshRate) + System.Math.Abs(freq - resolution.RefreshRate) < 1e-6) { - CG.DisplayCapture(display); + if (displaysCaptured.Contains(display) == false) + { + CG.DisplayCapture(display); + } + + Debug.Print("Changing resolution to {0}x{1}x{2}@{3}.", width, height, bpp, freq); CG.DisplaySwitchToMode(display, displayModes[j]); @@ -150,8 +155,12 @@ namespace OpenTK.Platform.MacOS if (storedModes.ContainsKey(display)) { + Debug.Print("Restoring resolution."); + CG.DisplaySwitchToMode(display, storedModes[display]); CG.DisplayRelease(display); + displaysCaptured.Remove(display); + return true; }