diff options
author | Kenneth Russel <[email protected]> | 2007-01-07 18:15:52 +0000 |
---|---|---|
committer | Kenneth Russel <[email protected]> | 2007-01-07 18:15:52 +0000 |
commit | b7244795d44ab06ea32d68136cdb1408804514cc (patch) | |
tree | 69aec31745365cb17d5eaf07e79bf45ed5f5b147 /src/classes/com/sun/opengl/impl | |
parent | a38af8cf1605adaf23ab43fb93feaf7d8bbce98e (diff) |
Fixed Issue 259: need a copy context
Added and specified GLContext.copy() and supplied implementations on
Windows, X11 and Mac OS X platforms. New code is untested at this
time. May need to make subsequent changes on X11 and Mac platforms
where new code has not been compiled yet.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@1075 232f8b59-042b-4e1e-8c03-345bb8c30851
Diffstat (limited to 'src/classes/com/sun/opengl/impl')
3 files changed, 47 insertions, 0 deletions
diff --git a/src/classes/com/sun/opengl/impl/macosx/MacOSXGLContext.java b/src/classes/com/sun/opengl/impl/macosx/MacOSXGLContext.java index 16855efb8..02bf81f2e 100644 --- a/src/classes/com/sun/opengl/impl/macosx/MacOSXGLContext.java +++ b/src/classes/com/sun/opengl/impl/macosx/MacOSXGLContext.java @@ -277,6 +277,18 @@ public abstract class MacOSXGLContext extends GLContextImpl return (nsContext != 0); } + public void copy(GLContext source, int mask) throws GLException { + long dst = getNSContext(); + long src = ((MacOSXGLContext) source).getNSContext(); + if (src == 0) { + throw new GLException("Source OpenGL context has not been created"); + } + if (dst == 0) { + throw new GLException("Destination OpenGL context has not been created"); + } + CGL.copyContext(dst, src, mask); + } + protected void resetGLFunctionAvailability() { super.resetGLFunctionAvailability(); diff --git a/src/classes/com/sun/opengl/impl/windows/WindowsGLContext.java b/src/classes/com/sun/opengl/impl/windows/WindowsGLContext.java index 7a4b73351..1276aea92 100644 --- a/src/classes/com/sun/opengl/impl/windows/WindowsGLContext.java +++ b/src/classes/com/sun/opengl/impl/windows/WindowsGLContext.java @@ -207,6 +207,20 @@ public class WindowsGLContext extends GLContextImpl { return (hglrc != 0); } + public void copy(GLContext source, int mask) throws GLException { + long dst = getHGLRC(); + long src = ((WindowsGLContext) source).getHGLRC(); + if (src == 0) { + throw new GLException("Source OpenGL context has not been created"); + } + if (dst == 0) { + throw new GLException("Destination OpenGL context has not been created"); + } + if (!WGL.wglCopyContext(src, dst, mask)) { + throw new GLException("wglCopyContext failed"); + } + } + protected void resetGLFunctionAvailability() { super.resetGLFunctionAvailability(); if (DEBUG) { diff --git a/src/classes/com/sun/opengl/impl/x11/X11GLContext.java b/src/classes/com/sun/opengl/impl/x11/X11GLContext.java index 0ed5eaebb..17b2cca40 100644 --- a/src/classes/com/sun/opengl/impl/x11/X11GLContext.java +++ b/src/classes/com/sun/opengl/impl/x11/X11GLContext.java @@ -193,6 +193,27 @@ public abstract class X11GLContext extends GLContextImpl { return (context != 0); } + public void copy(GLContext source, int mask) throws GLException { + long dst = getContext(); + long src = ((X11GLContext) source).getContext(); + if (src == 0) { + throw new GLException("Source OpenGL context has not been created"); + } + if (dst == 0) { + throw new GLException("Destination OpenGL context has not been created"); + } + if (mostRecentDisplay == 0) { + throw new GLException("Connection to X display not yet set up"); + } + lockToolkit(); + try { + GLX.glXCopyContext(mostRecentDisplay, src, dst, mask); + // Should check for X errors and raise GLException + } finally { + unlockToolkit(); + } + } + protected void resetGLFunctionAvailability() { super.resetGLFunctionAvailability(); if (DEBUG) { |