From 695dcd4d6055438f3146dfe3e18b9da8f8313cbf Mon Sep 17 00:00:00 2001 From: Virgile Bello Date: Fri, 20 May 2016 12:52:33 +0900 Subject: [PATCH] Egl & Cocoa: Don't change context when creating/deleting them --- Source/OpenTK/Platform/Egl/EglContext.cs | 5 ++--- Source/OpenTK/Platform/MacOS/CocoaContext.cs | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Source/OpenTK/Platform/Egl/EglContext.cs b/Source/OpenTK/Platform/Egl/EglContext.cs index 07673d35..18b33717 100644 --- a/Source/OpenTK/Platform/Egl/EglContext.cs +++ b/Source/OpenTK/Platform/Egl/EglContext.cs @@ -98,8 +98,6 @@ namespace OpenTK.Platform.Egl int[] attrib_list = new int[] { Egl.CONTEXT_CLIENT_VERSION, major, Egl.NONE }; HandleAsEGLContext = Egl.CreateContext(window.Display, config, shared != null ? shared.HandleAsEGLContext : IntPtr.Zero, attrib_list); - - MakeCurrent(window); } public EglContext(ContextHandle handle, EglWindowInfo window, IGraphicsContext sharedContext, @@ -199,7 +197,8 @@ namespace OpenTK.Platform.Egl { if (manual) { - Egl.MakeCurrent(WindowInfo.Display, WindowInfo.Surface, WindowInfo.Surface, IntPtr.Zero); + if (IsCurrent) + Egl.MakeCurrent(WindowInfo.Display, WindowInfo.Surface, WindowInfo.Surface, IntPtr.Zero); Egl.DestroyContext(WindowInfo.Display, HandleAsEGLContext); } IsDisposed = true; diff --git a/Source/OpenTK/Platform/MacOS/CocoaContext.cs b/Source/OpenTK/Platform/MacOS/CocoaContext.cs index 58dcec2d..5ae0c789 100644 --- a/Source/OpenTK/Platform/MacOS/CocoaContext.cs +++ b/Source/OpenTK/Platform/MacOS/CocoaContext.cs @@ -143,7 +143,6 @@ namespace OpenTK Mode = GetGraphicsMode(context); Update(cocoaWindow); - MakeCurrent(cocoaWindow); } private IntPtr SelectPixelFormat(GraphicsMode mode, int majorVersion, int minorVersion) @@ -336,7 +335,8 @@ namespace OpenTK if (!NSApplication.IsUIThread) return; - Cocoa.SendVoid(NSOpenGLContext, Selector.Get("clearCurrentContext")); + if (IsCurrent) + Cocoa.SendVoid(NSOpenGLContext, Selector.Get("clearCurrentContext")); Cocoa.SendVoid(Handle.Handle, Selector.Get("clearDrawable")); Cocoa.SendVoid(Handle.Handle, Selector.Get("release"));