diff --git a/Source/OpenTK/Graphics/GraphicsContextBase.cs b/Source/OpenTK/Graphics/GraphicsContextBase.cs index ddfd4918..d6537f53 100644 --- a/Source/OpenTK/Graphics/GraphicsContextBase.cs +++ b/Source/OpenTK/Graphics/GraphicsContextBase.cs @@ -36,7 +36,7 @@ using OpenTK.Platform; namespace OpenTK.Graphics { // Provides the foundation for all IGraphicsContext implementations. - abstract class GraphicsContextBase : IGraphicsContext, IGraphicsContextInternal + abstract class GraphicsContextBase : IGraphicsContext, IGraphicsContextInternal, IEquatable { #region Fields @@ -127,5 +127,36 @@ namespace OpenTK.Graphics #endif #endregion + + #region IEquatable Members + + public bool Equals(IGraphicsContextInternal other) + { + return Context.Equals(other.Context); + } + + #endregion + + #region Public Members + + public override string ToString() + { + return string.Format("[{0}: IsCurrent={1}, IsDisposed={2}, VSync={3}, SwapInterval={4}, GraphicsMode={5}, ErrorChecking={6}, Implementation={7}, Context={8}]", + GetType().Name, IsCurrent, IsDisposed, VSync, SwapInterval, GraphicsMode, ErrorChecking, Implementation, Context); + } + + public override int GetHashCode() + { + return Handle.GetHashCode(); + } + + public override bool Equals(object obj) + { + return + obj is IGraphicsContextInternal && + Equals((IGraphicsContextInternal)obj); + } + + #endregion } }