From 0a6e191eaebcc8edc2611dbedab6fd04a615fc2f Mon Sep 17 00:00:00 2001 From: Kenneth Russel <kbrussel@alum.mit.edu> Date: Thu, 26 Jun 2003 13:21:12 +0000 Subject: Initial Mac OS X port of Jogl by Gerard Ziemski and Kenneth Russell, subsuming the previous prototype implementation (no GLCanvas support) done by Marc Downie. Added user's guide (HTML format) under doc/userguide/index.html. git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@13 232f8b59-042b-4e1e-8c03-345bb8c30851 --- src/net/java/games/jogl/GLCanvas.java | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'src/net/java/games/jogl/GLCanvas.java') diff --git a/src/net/java/games/jogl/GLCanvas.java b/src/net/java/games/jogl/GLCanvas.java index 21c06ee3f..adee0315d 100644 --- a/src/net/java/games/jogl/GLCanvas.java +++ b/src/net/java/games/jogl/GLCanvas.java @@ -60,6 +60,10 @@ public final class GLCanvas extends Canvas implements GLDrawable { private GLDrawableHelper drawableHelper = new GLDrawableHelper(); private GLContext context; + + // FIXME: Temporary workaround for JAWT bug in Panther developer release. + // This workaround makes things quite a bit slower + private static final boolean isOSX = System.getProperty("os.name").equals("Mac OS X"); GLCanvas(GLCapabilities capabilities, GLCapabilitiesChooser chooser) { super(); @@ -72,14 +76,24 @@ public final class GLCanvas extends Canvas implements GLDrawable { } public void display() { - context.invokeGL(displayAction, false, initAction); + if (isOSX) { + // Temporary workaround for JAWT bug in Panther developer release. + // All OpenGL rendering must occur on the AWT event thread. + repaint(); + } else { + displayImpl(); + } } /** Overridden from Canvas; calls {@link #display}. Should not be invoked by applications directly. */ public void paint(Graphics g) { - if (!context.getNoAutoRedrawMode()) { - display(); + if (isOSX) { + displayImpl(); + } else { + if (!context.getNoAutoRedrawMode()) { + display(); + } } } @@ -161,6 +175,10 @@ public final class GLCanvas extends Canvas implements GLDrawable { // Internals only below this point // + private void displayImpl() { + context.invokeGL(displayAction, false, initAction); + } + class InitAction implements Runnable { public void run() { drawableHelper.init(GLCanvas.this); -- cgit v1.2.3