diff --git a/Source/OpenTK/GLControl.cs b/Source/OpenTK/GLControl.cs
index a2d74839..cc6467f4 100644
--- a/Source/OpenTK/GLControl.cs
+++ b/Source/OpenTK/GLControl.cs
@@ -330,7 +330,7 @@ namespace OpenTK
///
public GraphicsMode GraphicsMode
{
- get { return (Context as IGraphicsContextInternal).GraphicsMode; }
+ get { return Context.GraphicsMode; }
}
#endregion
diff --git a/Source/OpenTK/Graphics/GraphicsContext.cs b/Source/OpenTK/Graphics/GraphicsContext.cs
index f50e97e4..371d7e93 100644
--- a/Source/OpenTK/Graphics/GraphicsContext.cs
+++ b/Source/OpenTK/Graphics/GraphicsContext.cs
@@ -385,7 +385,7 @@ namespace OpenTK.Graphics
///
public GraphicsMode GraphicsMode
{
- get { return (implementation as IGraphicsContextInternal).GraphicsMode; }
+ get { return implementation.GraphicsMode; }
}
/////
diff --git a/Source/OpenTK/Graphics/IGraphicsContext.cs b/Source/OpenTK/Graphics/IGraphicsContext.cs
index 449551c8..b71b2501 100644
--- a/Source/OpenTK/Graphics/IGraphicsContext.cs
+++ b/Source/OpenTK/Graphics/IGraphicsContext.cs
@@ -51,6 +51,9 @@ namespace OpenTK.Graphics
///
///
void Update(IWindowInfo window);
+
+ /// Gets the GraphicsMode of this instance.
+ GraphicsMode GraphicsMode { get; }
}
public delegate void DestroyEvent(T sender, EventArgs e);
@@ -87,9 +90,6 @@ namespace OpenTK.Graphics
//
//IWindowInfo Info { get; }
- /// Gets the GraphicsMode of the context.
- GraphicsMode GraphicsMode { get; }
-
/////
///// Gets a System.IntPtr containing the handle to the OpenGL context which is current in the
///// calling thread, or IntPtr.Zero if no OpenGL context is current.
diff --git a/Source/OpenTK/Platform/MacOS/AglContext.cs b/Source/OpenTK/Platform/MacOS/AglContext.cs
index 6a850f20..176bb525 100644
--- a/Source/OpenTK/Platform/MacOS/AglContext.cs
+++ b/Source/OpenTK/Platform/MacOS/AglContext.cs
@@ -31,9 +31,9 @@ namespace OpenTK.Platform.MacOS
bool mVSync = false;
IntPtr displayID;
- GraphicsMode mode;
- CarbonWindowInfo carbonWindow;
- IntPtr shareContextRef;
+ GraphicsMode graphics_mode;
+ CarbonWindowInfo carbonWindow;
+ IntPtr shareContextRef;
static AglContext()
{
@@ -45,13 +45,13 @@ namespace OpenTK.Platform.MacOS
Debug.Print("Context Type: {0}", shareContext);
Debug.Print("Window info: {0}", window);
- this.mode = mode;
- this.carbonWindow = (CarbonWindowInfo)window;
+ this.graphics_mode = mode;
+ this.carbonWindow = (CarbonWindowInfo)window;
if (shareContext is AglContext)
shareContextRef = ((AglContext)shareContext).contextRef;
- CreateContext(mode, carbonWindow, shareContextRef, true);
+ CreateContext(mode, carbonWindow, shareContextRef, true);
}
@@ -72,7 +72,7 @@ namespace OpenTK.Platform.MacOS
IntPtr shareContextRef, bool fullscreen)
{
List aglAttributes = new List();
-
+
Debug.Print("AGL pixel format attributes:");
Debug.Indent();
@@ -97,10 +97,10 @@ namespace OpenTK.Platform.MacOS
AddPixelAttrib(aglAttributes, Agl.PixelFormatAttribute.AGL_ACCUM_ALPHA_SIZE, mode.AccumulatorFormat.Alpha);
}
- if (fullscreen)
- {
- AddPixelAttrib(aglAttributes, Agl.PixelFormatAttribute.AGL_FULLSCREEN);
- }
+ if (fullscreen)
+ {
+ AddPixelAttrib(aglAttributes, Agl.PixelFormatAttribute.AGL_FULLSCREEN);
+ }
AddPixelAttrib(aglAttributes, Agl.PixelFormatAttribute.AGL_NONE);
Debug.Unindent();
@@ -113,19 +113,19 @@ namespace OpenTK.Platform.MacOS
AGLPixelFormat myAGLPixelFormat;
// Choose a pixel format with the attributes we specified.
- if (fullscreen)
- {
- IntPtr gdevice;
-
- OSStatus status = Carbon.API.DMGetGDeviceByDisplayID(
- QuartzDisplayDeviceDriver.MainDisplay, out gdevice, false);
-
- if (status != OSStatus.NoError)
- throw new MacOSException(status, "DMGetGDeviceByDisplayID failed.");
+ if (fullscreen)
+ {
+ IntPtr gdevice;
+
+ OSStatus status = Carbon.API.DMGetGDeviceByDisplayID(
+ QuartzDisplayDeviceDriver.MainDisplay, out gdevice, false);
+
+ if (status != OSStatus.NoError)
+ throw new MacOSException(status, "DMGetGDeviceByDisplayID failed.");
- myAGLPixelFormat = Agl.aglChoosePixelFormat(
- ref gdevice, 1,
- aglAttributes.ToArray());
+ myAGLPixelFormat = Agl.aglChoosePixelFormat(
+ ref gdevice, 1,
+ aglAttributes.ToArray());
Agl.AglError err = Agl.GetError();
@@ -137,16 +137,16 @@ namespace OpenTK.Platform.MacOS
CreateContext(mode, carbonWindow, shareContextRef, false);
return;
}
- }
- else
- {
- myAGLPixelFormat = Agl.aglChoosePixelFormat(
- IntPtr.Zero, 0,
- aglAttributes.ToArray());
+ }
+ else
+ {
+ myAGLPixelFormat = Agl.aglChoosePixelFormat(
+ IntPtr.Zero, 0,
+ aglAttributes.ToArray());
MyAGLReportError("aglChoosePixelFormat");
- }
-
+ }
+
// create the context and share it with the share reference.
this.contextRef = Agl.aglCreateContext(myAGLPixelFormat, shareContextRef);
@@ -160,8 +160,8 @@ namespace OpenTK.Platform.MacOS
SetDrawable(carbonWindow);
SetBufferRect(carbonWindow);
- Update(carbonWindow);
-
+ Update(carbonWindow);
+
MakeCurrent(carbonWindow);
Debug.Print("context: {0}", contextRef);
@@ -170,17 +170,17 @@ namespace OpenTK.Platform.MacOS
void SetBufferRect(CarbonWindowInfo carbonWindow)
{
if (carbonWindow.IsControl == false)
- return;
+ return;
System.Windows.Forms.Control ctrl = Control.FromHandle(carbonWindow.WindowRef);
-
+
if (ctrl.TopLevelControl == null)
- return;
-
+ return;
+
Rect rect = API.GetControlBounds(carbonWindow.WindowRef);
- rect.X = (short)ctrl.Left;
- rect.Y = (short)ctrl.Top;
+ rect.X = (short)ctrl.Left;
+ rect.Y = (short)ctrl.Top;
Debug.Print("Setting buffer_rect for control.");
Debug.Print("MacOS Coordinate Rect: {0}", rect);
@@ -202,15 +202,15 @@ namespace OpenTK.Platform.MacOS
MyAGLReportError("aglEnable");
}
- void SetDrawable(CarbonWindowInfo carbonWindow)
- {
- IntPtr windowPort = GetWindowPortForWindowInfo(carbonWindow);
+ void SetDrawable(CarbonWindowInfo carbonWindow)
+ {
+ IntPtr windowPort = GetWindowPortForWindowInfo(carbonWindow);
Agl.aglSetDrawable(contextRef, windowPort);
MyAGLReportError("aglSetDrawable");
-
- }
+
+ }
private static IntPtr GetWindowPortForWindowInfo(CarbonWindowInfo carbonWindow)
{
@@ -230,8 +230,8 @@ namespace OpenTK.Platform.MacOS
CarbonWindowInfo carbonWindow = (CarbonWindowInfo)window;
SetDrawable(carbonWindow);
- SetBufferRect(carbonWindow);
-
+ SetBufferRect(carbonWindow);
+
Agl.aglUpdateContext(contextRef);
}
@@ -274,23 +274,23 @@ namespace OpenTK.Platform.MacOS
#region IGraphicsContext Members
- bool firstSwap = false;
+ bool firstSwap = false;
public void SwapBuffers()
{
// this is part of the hack to avoid dropping the first frame when
// using multiple GLControls.
- if (firstSwap == false && carbonWindow.IsControl)
- {
- Debug.WriteLine("--> Resetting drawable. <--");
- firstSwap = true;
- SetDrawable(carbonWindow);
+ if (firstSwap == false && carbonWindow.IsControl)
+ {
+ Debug.WriteLine("--> Resetting drawable. <--");
+ firstSwap = true;
+ SetDrawable(carbonWindow);
Update(carbonWindow);
}
Agl.aglSwapBuffers(contextRef);
MyAGLReportError("aglSwapBuffers");
}
-
+
public void MakeCurrent(IWindowInfo window)
{
if (Agl.aglSetCurrentContext(contextRef) == false)
@@ -331,6 +331,11 @@ namespace OpenTK.Platform.MacOS
mVSync = value;
}
}
+
+ GraphicsMode IGraphicsContext.GraphicsMode
+ {
+ get { return graphics_mode; }
+ }
#endregion
@@ -405,11 +410,6 @@ namespace OpenTK.Platform.MacOS
get { return (ContextHandle)contextRef; }
}
- GraphicsMode IGraphicsContextInternal.GraphicsMode
- {
- get { throw new Exception("The method or operation is not implemented."); }
- }
-
void IGraphicsContextInternal.RegisterForDisposal(IDisposable resource)
{
throw new Exception("The method or operation is not implemented.");
diff --git a/Source/OpenTK/Platform/Windows/WinGLContext.cs b/Source/OpenTK/Platform/Windows/WinGLContext.cs
index 26af453f..d1f04766 100644
--- a/Source/OpenTK/Platform/Windows/WinGLContext.cs
+++ b/Source/OpenTK/Platform/Windows/WinGLContext.cs
@@ -221,6 +221,15 @@ namespace OpenTK.Platform.Windows
}
#endregion
+ #region GraphicsMode IGLContext.GraphicsMode
+
+ GraphicsMode IGraphicsContext.GraphicsMode
+ {
+ get { return format; }
+ }
+
+ #endregion
+
public event DestroyEvent Destroy;
#endregion
@@ -268,15 +277,6 @@ namespace OpenTK.Platform.Windows
*/
#endregion
- #region GraphicsMode IGLContextInternal.GraphicsMode
-
- GraphicsMode IGraphicsContextInternal.GraphicsMode
- {
- get { return format; }
- }
-
- #endregion
-
#region public IntPtr GetAddress(string function_string)
public IntPtr GetAddress(string function_string)
diff --git a/Source/OpenTK/Platform/X11/X11GLContext.cs b/Source/OpenTK/Platform/X11/X11GLContext.cs
index f3325ec4..7a321630 100644
--- a/Source/OpenTK/Platform/X11/X11GLContext.cs
+++ b/Source/OpenTK/Platform/X11/X11GLContext.cs
@@ -25,6 +25,7 @@ namespace OpenTK.Platform.X11
bool vsync_supported;
int vsync_interval;
bool glx_loaded;
+ GraphicsMode graphics_mode;
bool disposed;
@@ -147,6 +148,8 @@ namespace OpenTK.Platform.X11
if (!Glx.IsDirect(currentWindow.Display, context.Handle))
Debug.Print("Warning: Context is not direct.");
+
+ graphics_mode = mode;
}
#endregion
@@ -279,6 +282,15 @@ namespace OpenTK.Platform.X11
}
#endregion
+ #region public DisplayMode Mode
+
+ GraphicsMode IGraphicsContext.GraphicsMode
+ {
+ get { return graphics_mode; }
+ }
+
+ #endregion
+
public void RegisterForDisposal(IDisposable resource)
{
throw new NotSupportedException("Use OpenTK.GraphicsContext instead.");
@@ -315,15 +327,6 @@ namespace OpenTK.Platform.X11
#endregion
- #region public DisplayMode Mode
-
- GraphicsMode IGraphicsContextInternal.GraphicsMode
- {
- get { return null; }
- }
-
- #endregion
-
#region ContextHandle IGLContextInternal.Context
ContextHandle IGraphicsContextInternal.Context