Merge pull request #691 from SparkusK/develop

Stop taking X locks on display when attempting MakeCurrent() calls.
This commit is contained in:
varon 2017-12-11 11:40:16 +02:00 committed by GitHub
commit 19f81efc89
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -319,14 +319,12 @@ namespace OpenTK.Platform.X11
Handle, System.Threading.Thread.CurrentThread.ManagedThreadId, Display)); Handle, System.Threading.Thread.CurrentThread.ManagedThreadId, Display));
bool result; bool result;
using (new XLock(Display))
{
result = Glx.MakeCurrent(Display, IntPtr.Zero, IntPtr.Zero); result = Glx.MakeCurrent(Display, IntPtr.Zero, IntPtr.Zero);
if (result) if (result)
{ {
currentWindow = null; currentWindow = null;
} }
}
Debug.Print("{0}", result ? "done!" : "failed."); Debug.Print("{0}", result ? "done!" : "failed.");
} }
else else
@ -342,14 +340,11 @@ namespace OpenTK.Platform.X11
throw new InvalidOperationException("Invalid display, window or context."); throw new InvalidOperationException("Invalid display, window or context.");
} }
using (new XLock(Display))
{
result = Glx.MakeCurrent(Display, w.Handle, Handle); result = Glx.MakeCurrent(Display, w.Handle, Handle);
if (result) if (result)
{ {
currentWindow = w; currentWindow = w;
} }
}
if (!result) if (!result)
{ {
@ -367,13 +362,10 @@ namespace OpenTK.Platform.X11
public override bool IsCurrent public override bool IsCurrent
{ {
get get
{
using (new XLock(Display))
{ {
return Glx.GetCurrentContext() == Handle.Handle; return Glx.GetCurrentContext() == Handle.Handle;
} }
} }
}
public override int SwapInterval public override int SwapInterval
{ {
@ -487,12 +479,9 @@ namespace OpenTK.Platform.X11
IntPtr display = Display; IntPtr display = Display;
if (IsCurrent) if (IsCurrent)
{
using (new XLock(display))
{ {
Glx.MakeCurrent(display, IntPtr.Zero, IntPtr.Zero); Glx.MakeCurrent(display, IntPtr.Zero, IntPtr.Zero);
} }
}
using (new XLock(display)) using (new XLock(display))
{ {
Glx.DestroyContext(display, Handle); Glx.DestroyContext(display, Handle);