Egl & Cocoa: Don't change context when creating/deleting them
authorVirgile Bello <virgile@siliconstudio.co.jp>
Fri, 20 May 2016 03:52:33 +0000 (12:52 +0900)
committerVirgile Bello <virgile@siliconstudio.co.jp>
Fri, 20 May 2016 03:55:28 +0000 (12:55 +0900)
Source/OpenTK/Platform/Egl/EglContext.cs
Source/OpenTK/Platform/MacOS/CocoaContext.cs

index 07673d3..18b3371 100644 (file)
@@ -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;
index 58dcec2..5ae0c78 100644 (file)
@@ -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"));