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