diff options
author | Sven Gothel <sgothel@jausoft.com> | 2011-11-12 13:42:40 +0100 |
---|---|---|
committer | Sven Gothel <sgothel@jausoft.com> | 2011-11-12 13:42:40 +0100 |
commit | 33aaa037e31ec7d411f4acaeea63a383037f027d (patch) | |
tree | 025328b842ede9ec2d09edb8b521fea72004b651 /src/jogl/classes/jogamp/opengl | |
parent | 88c80de9a227b15cc1e287bba8e62e3c55b4a2b1 (diff) |
OSX: Fix context update call
It turns our that the native ContextUpdater does not work reliable in all cases,
hence we need to verify if the drawable size has changed as well.
Diffstat (limited to 'src/jogl/classes/jogamp/opengl')
-rw-r--r-- | src/jogl/classes/jogamp/opengl/macosx/cgl/MacOSXOnscreenCGLContext.java | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/jogl/classes/jogamp/opengl/macosx/cgl/MacOSXOnscreenCGLContext.java b/src/jogl/classes/jogamp/opengl/macosx/cgl/MacOSXOnscreenCGLContext.java index 97d198c92..de3e90c4c 100644 --- a/src/jogl/classes/jogamp/opengl/macosx/cgl/MacOSXOnscreenCGLContext.java +++ b/src/jogl/classes/jogamp/opengl/macosx/cgl/MacOSXOnscreenCGLContext.java @@ -57,7 +57,13 @@ public class MacOSXOnscreenCGLContext extends MacOSXCGLContext { @Override protected void drawableUpdatedNotify() throws GLException { - if(0==updateHandle || CGL.updateContextNeedsUpdate(updateHandle)) { + final int w = drawable.getWidth(); + final int h = drawable.getHeight(); + final boolean updateContext = ( 0!=updateHandle && CGL.updateContextNeedsUpdate(updateHandle) ) || + w != lastWidth || h != lastHeight; + if(updateContext) { + lastWidth = w; + lastHeight = h; if (contextHandle == 0) { throw new GLException("Context not created"); } @@ -65,8 +71,6 @@ public class MacOSXOnscreenCGLContext extends MacOSXCGLContext { } } - protected long updateHandle = 0; - @Override protected boolean createImpl() { boolean res = super.createImpl(); @@ -79,6 +83,9 @@ public class MacOSXOnscreenCGLContext extends MacOSXCGLContext { throw new InternalError("XXX2"); } } + updateHandle = 0; + lastWidth = -1; + lastHeight = -1; return res; } @@ -89,5 +96,8 @@ public class MacOSXOnscreenCGLContext extends MacOSXCGLContext { updateHandle = 0; } super.destroyImpl(); - } + } + + private long updateHandle; + private int lastWidth, lastHeight; } |