GraphicsContext.GetCurrentContext now returns an IGraphicsContext instead of a GraphicsContext.

Fixed Texture2D finalizer.
Removed GraphicsContext.[Enter|Exit]BeginRegion(). GL.Begin|End now calls IGraphicsContext.ErrorChecking = false.
This commit is contained in:
the_fiddler 2009-06-04 10:34:12 +00:00
parent cb661c2dca
commit f8d89e597d
5 changed files with 16 additions and 28 deletions

View file

@ -51,12 +51,12 @@ namespace OpenTK.Graphics
#region Constructors
public ErrorHelper(GraphicsContext context)
public ErrorHelper(IGraphicsContext context)
{
if (context == null)
throw new GraphicsContextMissingException();
Context = context;
Context = (GraphicsContext)context;
Context.ResetErrors();
}

View file

@ -24592,7 +24592,7 @@ namespace OpenTK.Graphics
#if DEBUG
using (new ErrorHelper(GraphicsContext.CurrentContext))
{
GraphicsContext.CurrentContext.EnterBeginRegion();
GraphicsContext.CurrentContext.ErrorChecking = false;
#endif
Delegates.glBegin((OpenTK.Graphics.BeginMode)mode);
#if DEBUG
@ -36110,7 +36110,7 @@ namespace OpenTK.Graphics
#endif
Delegates.glEnd();
#if DEBUG
GraphicsContext.CurrentContext.ExitBeginRegion();
GraphicsContext.CurrentContext.ErrorChecking = true;
}
#endif
}

View file

@ -184,7 +184,7 @@ namespace OpenTK.Graphics
/// <summary>
/// Gets the GraphicsContext that is current in the calling thread.
/// </summary>
public static GraphicsContext CurrentContext
public static IGraphicsContext CurrentContext
{
get
{
@ -240,29 +240,14 @@ namespace OpenTK.Graphics
#region --- Internal Members ---
bool inside_begin_region;
List<ErrorCode> error_list = new List<ErrorCode>();
// Indicates that we entered a GL.Begin() - GL.End() region.
[Conditional("DEBUG")]
internal void EnterBeginRegion()
{
inside_begin_region = true;
}
// Indicates that we left a GL.Begin() - GL.End() region.
[Conditional("DEBUG")]
internal void ExitBeginRegion()
{
inside_begin_region = false;
}
// Retrieve all OpenGL errors to clear the error list.
// See http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/geterror.html
[Conditional("DEBUG")]
internal void ResetErrors()
{
if (check_errors && !inside_begin_region)
if (check_errors)
{
while (GL.GetError() != ErrorCode.NoError)
{ }
@ -273,7 +258,7 @@ namespace OpenTK.Graphics
[Conditional("DEBUG")]
internal void CheckErrors()
{
if (check_errors && !inside_begin_region)
if (check_errors)
{
error_list.Clear();
ErrorCode error;

View file

@ -39,7 +39,7 @@ namespace OpenTK.Graphics
/// <summary>
/// Gets the GraphicsContext that owns this resource.
/// </summary>
GraphicsContext Context { get; }
IGraphicsContext Context { get; }
/// <summary>
/// Gets the Id of this IGraphicsResource.

View file

@ -30,6 +30,7 @@ using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Drawing.Imaging;
using System.Diagnostics;
namespace OpenTK.Graphics
{
@ -37,7 +38,7 @@ namespace OpenTK.Graphics
{
#region Fields
GraphicsContext context;
IGraphicsContext context;
int id;
int width, height;
bool disposed;
@ -250,7 +251,7 @@ namespace OpenTK.Graphics
#region IGraphicsResource.Context
GraphicsContext IGraphicsResource.Context { get { return context; } }
IGraphicsContext IGraphicsResource.Context { get { return context; } }
#endregion
@ -301,15 +302,17 @@ namespace OpenTK.Graphics
{
GL.DeleteTexture(id);
}
else
{
Debug.Print("[Warning] {0} leaked.", this);
}
disposed = true;
}
}
~Texture2D()
{
GraphicsContext context = (this as IGraphicsResource).Context;
if (context != null)
(context as IGraphicsContextInternal).RegisterForDisposal(this);
Dispose(false);
}
#endregion