diff options
author | Sven Gothel <[email protected]> | 2011-11-26 06:19:33 +0100 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2011-11-26 06:19:33 +0100 |
commit | 50100b85ce5fde48788efbc2211b26fb9d7c9dfd (patch) | |
tree | d0b1c85ea867d01474934e28af7281973888e03c /src/newt/classes/jogamp | |
parent | 8a7ebf29156ac886a267fe32d78baede009a638f (diff) |
NEWT X11Display: Use default X11 locking for X11GraphicsDevice
Due to Display's reusage and hence concurrent involvement in off-thread animation,
the X11 default lock is required.
In case you require 2 GLWindow's w/o interference to each other (ie. locking),
you need to use separate Display instances.
Diffstat (limited to 'src/newt/classes/jogamp')
-rw-r--r-- | src/newt/classes/jogamp/newt/driver/x11/X11Display.java | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/newt/classes/jogamp/newt/driver/x11/X11Display.java b/src/newt/classes/jogamp/newt/driver/x11/X11Display.java index b2437ab37..227dd7439 100644 --- a/src/newt/classes/jogamp/newt/driver/x11/X11Display.java +++ b/src/newt/classes/jogamp/newt/driver/x11/X11Display.java @@ -34,10 +34,13 @@ package jogamp.newt.driver.x11; -import javax.media.nativewindow.*; -import javax.media.nativewindow.x11.*; -import jogamp.newt.*; +import javax.media.nativewindow.AbstractGraphicsDevice; +import javax.media.nativewindow.NativeWindowException; +import javax.media.nativewindow.x11.X11GraphicsDevice; + import jogamp.nativewindow.x11.X11Util; +import jogamp.newt.DisplayImpl; +import jogamp.newt.NEWTJNILibLoader; public class X11Display extends DisplayImpl { @@ -65,6 +68,13 @@ public class X11Display extends DisplayImpl { return X11Util.validateDisplayName(name, handle); } + /** + * {@inheritDoc} + * + * We use a private non-shared X11 Display instance for EDT window operations and one for exposed animation, eg. OpenGL. + * Since it is possible to share this device via {@link com.jogamp.newt.NewtFactory#createDisplay(String, boolean)}, + * we have to supply it w/ basic locking, implicit to the constructor {@link X11GraphicsDevice#X11GraphicsDevice(long, int, boolean)}. + */ protected void createNativeImpl() { long handle = X11Util.openDisplay(name); if( 0 == handle ) { @@ -86,8 +96,8 @@ public class X11Display extends DisplayImpl { throw e; } - // We use a private non-shared X11 Display instance for EDT window operations and one for exposed animation, eg. OpenGL - aDevice = new X11GraphicsDevice(handle, AbstractGraphicsDevice.DEFAULT_UNIT, NativeWindowFactory.getNullToolkitLock(), false); + // see API doc above! + aDevice = new X11GraphicsDevice(handle, AbstractGraphicsDevice.DEFAULT_UNIT, false); } protected void closeNativeImpl() { |