diff options
author | Sven Gothel <[email protected]> | 2012-10-30 17:04:42 +0100 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2012-10-30 17:04:42 +0100 |
commit | 5deb97e50abf0c19dc37aa69add1dfa2447825ad (patch) | |
tree | 6eacdf16cfdabeae53ebf358c95eab9929c68d80 /src/jogl/classes/jogamp/opengl/x11/glx/X11ExternalGLXContext.java | |
parent | adea26fedc2fcd99685a73ac3301ccaeadc2fd99 (diff) |
GLX/GLXExt Robustness: Use NIODirectOnly for all bindings. For these internal APIs, critical array is not required, hence redundant.
Diffstat (limited to 'src/jogl/classes/jogamp/opengl/x11/glx/X11ExternalGLXContext.java')
-rw-r--r-- | src/jogl/classes/jogamp/opengl/x11/glx/X11ExternalGLXContext.java | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/src/jogl/classes/jogamp/opengl/x11/glx/X11ExternalGLXContext.java b/src/jogl/classes/jogamp/opengl/x11/glx/X11ExternalGLXContext.java index 03a0eefbf..bebb4e68a 100644 --- a/src/jogl/classes/jogamp/opengl/x11/glx/X11ExternalGLXContext.java +++ b/src/jogl/classes/jogamp/opengl/x11/glx/X11ExternalGLXContext.java @@ -40,6 +40,8 @@ package jogamp.opengl.x11.glx; +import java.nio.IntBuffer; + import javax.media.nativewindow.NativeSurface; import javax.media.nativewindow.VisualIDHolder; import javax.media.opengl.GLCapabilities; @@ -52,6 +54,7 @@ import jogamp.nativewindow.WrappedSurface; import jogamp.opengl.GLContextImpl; import jogamp.opengl.GLContextShareSet; +import com.jogamp.common.nio.Buffers; import com.jogamp.nativewindow.x11.X11GraphicsScreen; public class X11ExternalGLXContext extends X11GLXContext { @@ -78,31 +81,31 @@ public class X11ExternalGLXContext extends X11GLXContext { if (drawable == 0) { throw new GLException("Error: attempted to make an external GLDrawable without a drawable/context current"); } - int[] val = new int[1]; + IntBuffer val = Buffers.newDirectIntBuffer(1); int w, h; - GLX.glXQueryDrawable(display, drawable, GLX.GLX_WIDTH, val, 0); - w=val[0]; - GLX.glXQueryDrawable(display, drawable, GLX.GLX_HEIGHT, val, 0); - h=val[0]; + GLX.glXQueryDrawable(display, drawable, GLX.GLX_WIDTH, val); + w=val.get(0); + GLX.glXQueryDrawable(display, drawable, GLX.GLX_HEIGHT, val); + h=val.get(0); - GLX.glXQueryContext(display, ctx, GLX.GLX_SCREEN, val, 0); - X11GraphicsScreen x11Screen = (X11GraphicsScreen) X11GraphicsScreen.createScreenDevice(display, val[0], false); + GLX.glXQueryContext(display, ctx, GLX.GLX_SCREEN, val); + X11GraphicsScreen x11Screen = (X11GraphicsScreen) X11GraphicsScreen.createScreenDevice(display, val.get(0), false); - GLX.glXQueryContext(display, ctx, GLX.GLX_FBCONFIG_ID, val, 0); + GLX.glXQueryContext(display, ctx, GLX.GLX_FBCONFIG_ID, val); X11GLXGraphicsConfiguration cfg = null; // sometimes glXQueryContext on an external context gives us a framebuffer config ID // of 0, which doesn't work in a subsequent call to glXChooseFBConfig; if this happens, // create and use a default config (this has been observed when running on CentOS 5.5 inside // of VMWare Server 2.0 with the Mesa 6.5.1 drivers) - if( VisualIDHolder.VID_UNDEFINED == val[0] || !X11GLXGraphicsConfiguration.GLXFBConfigIDValid(display, x11Screen.getIndex(), val[0]) ) { + if( VisualIDHolder.VID_UNDEFINED == val.get(0) || !X11GLXGraphicsConfiguration.GLXFBConfigIDValid(display, x11Screen.getIndex(), val.get(0)) ) { GLCapabilities glcapsDefault = new GLCapabilities(GLProfile.getDefault()); cfg = X11GLXGraphicsConfigurationFactory.chooseGraphicsConfigurationStatic(glcapsDefault, glcapsDefault, null, x11Screen, VisualIDHolder.VID_UNDEFINED); if(DEBUG) { - System.err.println("X11ExternalGLXContext invalid FBCONFIG_ID "+val[0]+", using default cfg: " + cfg); + System.err.println("X11ExternalGLXContext invalid FBCONFIG_ID "+val.get(0)+", using default cfg: " + cfg); } } else { - cfg = X11GLXGraphicsConfiguration.create(glp, x11Screen, val[0]); + cfg = X11GLXGraphicsConfiguration.create(glp, x11Screen, val.get(0)); } final WrappedSurface ns = new WrappedSurface(cfg, drawable, w, h, true); |