diff options
author | Sven Gothel <[email protected]> | 2014-03-10 22:14:34 +0100 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2014-03-10 22:14:34 +0100 |
commit | fdd60adb1d421f2018b47ee17e9079c94b54910f (patch) | |
tree | 3be9345319ed6cccfe77b38e444dd92b2b4dba5c /make/config/jogl/glx-CustomJavaCode.java | |
parent | 132f6fe9eeada4321d776d6332482854c82f24e2 (diff) |
Bug 961: Stabilize glXGetFBConfigAttrib(..) and glXChooseFBConfig(..) Usage Against OpenGL Bugs ; Fix glXGetFBConfigs
- glXChooseFBConfig(..)
- Remove NULL FBConfig pointer from result in native code,
which has been observed in Mesa 8.0.5-4 libgl1-mesa-swx11 (Debian-7).
- glXGetFBConfigs
- Add manual implementation similar to glXChooseFBConfig
- glXGetFBConfigAttrib(..)
- glXGetFBConfig(..)
- Returns boolean reflecting success, don't throw exception - caller handles error
- Caller ignore failure if not essential (i.e. already chosen config)
Diffstat (limited to 'make/config/jogl/glx-CustomJavaCode.java')
-rw-r--r-- | make/config/jogl/glx-CustomJavaCode.java | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/make/config/jogl/glx-CustomJavaCode.java b/make/config/jogl/glx-CustomJavaCode.java index 4cce05dda..5a3ea392b 100644 --- a/make/config/jogl/glx-CustomJavaCode.java +++ b/make/config/jogl/glx-CustomJavaCode.java @@ -60,6 +60,25 @@ @param nitems a direct only {@link java.nio.IntBuffer} */ private static native ByteBuffer dispatch_glXChooseFBConfig(long dpy, int screen, Object attribList, int attribList_byte_offset, Object nitems, int nitems_byte_offset, long procAddress); + /** Entry point to C language function: <code> GLXFBConfig * glXGetFBConfigs(Display * dpy, int screen, int * nelements); </code> <br>Part of <code>GLX_VERSION_1_3</code> + @param nelements a direct only {@link java.nio.IntBuffer} */ + public static PointerBuffer glXGetFBConfigs(long dpy, int screen, IntBuffer nelements) { + + if (!Buffers.isDirect(nelements)) + throw new GLException("Argument \"nelements\" is not a direct buffer"); + final long __addr_ = glxProcAddressTable._addressof_glXGetFBConfigs; + if (__addr_ == 0) { + throw new GLException(String.format("Method \"%s\" not available", "glXGetFBConfigs")); + } + final ByteBuffer _res = dispatch_glXGetFBConfigs(dpy, screen, nelements, Buffers.getDirectBufferByteOffset(nelements), __addr_); + if (_res == null) return null; + return PointerBuffer.wrap(Buffers.nativeOrder(_res)); + } + + /** Entry point to C language function: <code> GLXFBConfig * glXGetFBConfigs(Display * dpy, int screen, int * nelements); </code> <br>Part of <code>GLX_VERSION_1_3</code> + @param nelements a direct only {@link java.nio.IntBuffer} */ + private static native ByteBuffer dispatch_glXGetFBConfigs(long dpy, int screen, Object nelements, int nelements_byte_offset, long procAddress); + /** Entry point to C language function: <code> XVisualInfo * glXChooseVisual(Display * dpy, int screen, int * attribList); </code> <br>Part of <code>GLX_VERSION_1_X</code> @param attribList a direct only {@link java.nio.IntBuffer} */ |