From 8c78f80f205345fe43ec2639e648421ef0134e57 Mon Sep 17 00:00:00 2001
From: Sven Gothel <sgothel@jausoft.com>
Date: Mon, 5 Nov 2012 05:02:38 +0100
Subject: GLAutoDrawable: Refine API change of commit
 c002e04f848116922a1ed7bd96ead54961649bbd

As suggested by Julien Gouesse, align 'enqueue(..)' method w/ 'invoke(..)':

-  public void enqueue(GLRunnable glRunnable);

+  public boolean invoke(boolean wait, List<GLRunnable> glRunnables);
---
 .../com/jogamp/opengl/util/GLDrawableUtil.java     | 35 +++++++++++-----------
 1 file changed, 18 insertions(+), 17 deletions(-)

(limited to 'src/jogl/classes/com/jogamp/opengl/util/GLDrawableUtil.java')

diff --git a/src/jogl/classes/com/jogamp/opengl/util/GLDrawableUtil.java b/src/jogl/classes/com/jogamp/opengl/util/GLDrawableUtil.java
index 08eaf0494..cc81e4820 100644
--- a/src/jogl/classes/com/jogamp/opengl/util/GLDrawableUtil.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/GLDrawableUtil.java
@@ -27,6 +27,9 @@
  */
 package com.jogamp.opengl.util;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import javax.media.opengl.GLAnimatorControl;
 import javax.media.opengl.GLAutoDrawable;
 import javax.media.opengl.GLContext;
@@ -80,7 +83,7 @@ public class GLDrawableUtil {
     dest.addGLEventListener(listener);
     if(preserveInitState && initialized) {
         dest.setGLEventListenerInitState(listener, true);
-        dest.enqueue(new ReshapeGLEventListener(listener));
+        dest.invoke(false, new ReshapeGLEventListener(listener));
     } // else .. !init state is default
   }
   
@@ -118,6 +121,8 @@ public class GLDrawableUtil {
    * @param b
    */
   public static final void swapGLContextAndAllGLEventListener(GLAutoDrawable a, GLAutoDrawable b) {
+    final List<GLRunnable> aGLCmds = new ArrayList<GLRunnable>();
+    final List<GLRunnable> bGLCmds = new ArrayList<GLRunnable>();
     final GLAnimatorControl aAnim = a.getAnimator();
     final GLAnimatorControl bAnim = b.getAnimator();    
     final boolean aIsPaused = isAnimatorAnimatingOnOtherThread(aAnim) && aAnim.pause();
@@ -146,32 +151,30 @@ public class GLDrawableUtil {
     //
     // trigger glFinish to sync GL ctx
     //
-    a.enqueue(glFinish);
-    b.enqueue(glFinish);
-    a.display();
-    b.display();
+    a.invoke(true, glFinish);
+    b.invoke(true, glFinish);
     
     //
     // switch context and
     // trigger GL-Viewport reset and reshape of all initialized GLEventListeners
     //
     b.setContext( a.setContext( b.getContext() ) );
-    a.enqueue(setViewport);
-    b.enqueue(setViewport);
+    aGLCmds.add(setViewport);
+    bGLCmds.add(setViewport);
     for(int i=0; i<aSz; i++) {
         if( aInit[i] ) {
-            b.enqueue(new ReshapeGLEventListener(aGLE[i]));
+            bGLCmds.add(new ReshapeGLEventListener(aGLE[i]));
         }
     }    
     for(int i=0; i<bSz; i++) {
         if( bInit[i] ) {
-            a.enqueue(new ReshapeGLEventListener(bGLE[i]));
+            aGLCmds.add(new ReshapeGLEventListener(bGLE[i]));
         }
     }
-    a.enqueue(glFinish);
-    b.enqueue(glFinish);
-    a.display();
-    b.display();
+    aGLCmds.add(glFinish);
+    bGLCmds.add(glFinish);
+    a.invoke(true, aGLCmds);
+    b.invoke(true, bGLCmds);
     
     // add all cached GLEventListener to their destination and fix their init-state
     for(int i=0; i<bSz; i++) {
@@ -248,10 +251,8 @@ public class GLDrawableUtil {
     }
     dest.setContext( src.setContext( dest.getContext() ) );
     
-    src.enqueue(setViewport);
-    dest.enqueue(setViewport);
-    src.display();
-    dest.display();
+    src.invoke(true, setViewport);
+    dest.invoke(true, setViewport);
     
     if(aIsPaused) { aAnim.resume(); }
     if(bIsPaused) { bAnim.resume(); }
-- 
cgit v1.2.3