From 33aaa037e31ec7d411f4acaeea63a383037f027d Mon Sep 17 00:00:00 2001 From: Sven Gothel Date: Sat, 12 Nov 2011 13:42:40 +0100 Subject: 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. --- .../opengl/macosx/cgl/MacOSXOnscreenCGLContext.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'src/jogl/classes/jogamp/opengl') 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; } -- cgit v1.2.3