diff options
Diffstat (limited to 'src/test/com/jogamp/opengl')
10 files changed, 381 insertions, 163 deletions
diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES1NEWT.java b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES1NEWT.java index 8f84e293d..f1c72cf57 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES1NEWT.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES1NEWT.java @@ -138,12 +138,13 @@ public class TestSharedContextVBOES1NEWT extends UITestCase { Assert.assertTrue(AWTRobotUtil.waitForVisible(glWindow, true)); Assert.assertTrue(AWTRobotUtil.waitForContextCreated(glWindow, true)); - System.err.println("Master Context: "); - MiscUtils.dumpSharedGLContext(sharedDrawable.getContext()); - System.err.println("New Context: "); - MiscUtils.dumpSharedGLContext(glWindow.getContext()); + MiscUtils.dumpSharedGLContext("Master Context", sharedDrawable.getContext()); + MiscUtils.dumpSharedGLContext("New Context", glWindow.getContext()); if( useShared ) { Assert.assertEquals("Master Context not shared as expected", true, sharedDrawable.getContext().isShared()); + Assert.assertEquals("Master Context is different", sharedDrawable.getContext(), glWindow.getContext().getSharedMaster()); + } else { + } Assert.assertEquals("New Context not shared as expected", useShared, glWindow.getContext().isShared()); Assert.assertEquals("Gears is not shared as expected", useShared, gears.usesSharedGears()); diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2AWT3.java b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2AWT3.java index a5b5653c0..fcbfcb19b 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2AWT3.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2AWT3.java @@ -157,12 +157,9 @@ public class TestSharedContextVBOES2AWT3 extends UITestCase { final List<GLContext> ctx1Shares = ctx1.getCreatedShares(); final List<GLContext> ctx2Shares = ctx2.getCreatedShares(); final List<GLContext> ctx3Shares = ctx3.getCreatedShares(); - System.err.println("XXX-C-3.1:"); - MiscUtils.dumpSharedGLContext(ctx1); - System.err.println("XXX-C-3.2:"); - MiscUtils.dumpSharedGLContext(ctx2); - System.err.println("XXX-C-3.3:"); - MiscUtils.dumpSharedGLContext(ctx3); + MiscUtils.dumpSharedGLContext("XXX-C-3.1", ctx1); + MiscUtils.dumpSharedGLContext("XXX-C-3.2", ctx2); + MiscUtils.dumpSharedGLContext("XXX-C-3.3", ctx3); Assert.assertTrue("Ctx1 is not shared", ctx1.isShared()); Assert.assertTrue("Ctx2 is not shared", ctx2.isShared()); @@ -307,12 +304,9 @@ public class TestSharedContextVBOES2AWT3 extends UITestCase { final List<GLContext> ctx1Shares = ctx1.getCreatedShares(); final List<GLContext> ctx2Shares = ctx2.getCreatedShares(); final List<GLContext> ctx3Shares = ctx3.getCreatedShares(); - System.err.println("XXX-C-3.1:"); - MiscUtils.dumpSharedGLContext(ctx1); - System.err.println("XXX-C-3.2:"); - MiscUtils.dumpSharedGLContext(ctx2); - System.err.println("XXX-C-3.3:"); - MiscUtils.dumpSharedGLContext(ctx3); + MiscUtils.dumpSharedGLContext("XXX-C-3.1", ctx1); + MiscUtils.dumpSharedGLContext("XXX-C-3.2", ctx2); + MiscUtils.dumpSharedGLContext("XXX-C-3.3", ctx3); Assert.assertTrue("Ctx1 is not shared", ctx1.isShared()); Assert.assertTrue("Ctx2 is not shared", ctx2.isShared()); diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2AWT3b.java b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2AWT3b.java index 4c9cb7253..bac84d4fb 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2AWT3b.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2AWT3b.java @@ -148,12 +148,9 @@ public class TestSharedContextVBOES2AWT3b extends UITestCase { final List<GLContext> ctx1Shares = ctx1.getCreatedShares(); final List<GLContext> ctx2Shares = ctx2.getCreatedShares(); final List<GLContext> ctx3Shares = ctx3.getCreatedShares(); - System.err.println("XXX-C-3.1:"); - MiscUtils.dumpSharedGLContext(ctx1); - System.err.println("XXX-C-3.2:"); - MiscUtils.dumpSharedGLContext(ctx2); - System.err.println("XXX-C-3.3:"); - MiscUtils.dumpSharedGLContext(ctx3); + MiscUtils.dumpSharedGLContext("XXX-C-3.1", ctx1); + MiscUtils.dumpSharedGLContext("XXX-C-3.2", ctx2); + MiscUtils.dumpSharedGLContext("XXX-C-3.3", ctx3); Assert.assertTrue("Ctx1 is not shared", ctx1.isShared()); Assert.assertTrue("Ctx2 is not shared", ctx2.isShared()); @@ -260,12 +257,9 @@ public class TestSharedContextVBOES2AWT3b extends UITestCase { final List<GLContext> ctx1Shares = ctx1.getCreatedShares(); final List<GLContext> ctx2Shares = ctx2.getCreatedShares(); final List<GLContext> ctx3Shares = ctx3.getCreatedShares(); - System.err.println("XXX-C-3.1:"); - MiscUtils.dumpSharedGLContext(ctx1); - System.err.println("XXX-C-3.2:"); - MiscUtils.dumpSharedGLContext(ctx2); - System.err.println("XXX-C-3.3:"); - MiscUtils.dumpSharedGLContext(ctx3); + MiscUtils.dumpSharedGLContext("XXX-C-3.1", ctx1); + MiscUtils.dumpSharedGLContext("XXX-C-3.2", ctx2); + MiscUtils.dumpSharedGLContext("XXX-C-3.3", ctx3); Assert.assertTrue("Ctx1 is not shared", ctx1.isShared()); Assert.assertTrue("Ctx2 is not shared", ctx2.isShared()); diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2NEWT0.java b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2NEWT0.java index d2d1384e4..eeab0869a 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2NEWT0.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2NEWT0.java @@ -122,8 +122,7 @@ public class TestSharedContextVBOES2NEWT0 extends UITestCase { Assert.assertTrue("Ctx is shared before shared creation", !ctx1.isShared()); final InsetsImmutable insets = f1.getInsets(); - System.err.println("XXX-C-2.1:"); - MiscUtils.dumpSharedGLContext(ctx1); + MiscUtils.dumpSharedGLContext("XXX-C-1.1", ctx1); // // 2nd @@ -139,10 +138,8 @@ public class TestSharedContextVBOES2NEWT0 extends UITestCase { { final List<GLContext> ctx1Shares = ctx1.getCreatedShares(); final List<GLContext> ctx2Shares = ctx2.getCreatedShares(); - System.err.println("XXX-C-2.1:"); - MiscUtils.dumpSharedGLContext(ctx1); - System.err.println("XXX-C-2.2:"); - MiscUtils.dumpSharedGLContext(ctx2); + MiscUtils.dumpSharedGLContext("XXX-C-2.1", ctx1); + MiscUtils.dumpSharedGLContext("XXX-C-2.2", ctx2); Assert.assertEquals("Ctx1 has unexpected number of created shares", 1, ctx1Shares.size()); Assert.assertEquals("Ctx2 has unexpected number of created shares", 1, ctx2Shares.size()); @@ -165,12 +162,9 @@ public class TestSharedContextVBOES2NEWT0 extends UITestCase { final List<GLContext> ctx1Shares = ctx1.getCreatedShares(); final List<GLContext> ctx2Shares = ctx2.getCreatedShares(); final List<GLContext> ctx3Shares = ctx3.getCreatedShares(); - System.err.println("XXX-C-3.1:"); - MiscUtils.dumpSharedGLContext(ctx1); - System.err.println("XXX-C-3.2:"); - MiscUtils.dumpSharedGLContext(ctx2); - System.err.println("XXX-C-3.3:"); - MiscUtils.dumpSharedGLContext(ctx3); + MiscUtils.dumpSharedGLContext("XXX-C-3.1", ctx1); + MiscUtils.dumpSharedGLContext("XXX-C-3.2", ctx2); + MiscUtils.dumpSharedGLContext("XXX-C-3.3", ctx3); Assert.assertEquals("Ctx1 has unexpected number of created shares", 2, ctx1Shares.size()); Assert.assertEquals("Ctx2 has unexpected number of created shares", 2, ctx2Shares.size()); @@ -197,12 +191,9 @@ public class TestSharedContextVBOES2NEWT0 extends UITestCase { final List<GLContext> ctx1Shares = ctx1.getCreatedShares(); final List<GLContext> ctx2Shares = ctx2.getCreatedShares(); final List<GLContext> ctx3Shares = ctx3.getCreatedShares(); - System.err.println("XXX-D-0.1:"); - MiscUtils.dumpSharedGLContext(ctx1); - System.err.println("XXX-D-0.2:"); - MiscUtils.dumpSharedGLContext(ctx2); - System.err.println("XXX-D-0.3:"); - MiscUtils.dumpSharedGLContext(ctx3); + MiscUtils.dumpSharedGLContext("XXX-D-0.1", ctx1); + MiscUtils.dumpSharedGLContext("XXX-D-0.2", ctx2); + MiscUtils.dumpSharedGLContext("XXX-D-0.3", ctx3); Assert.assertTrue("Ctx1 is shared", ctx1.isShared()); Assert.assertTrue("Ctx2 is shared", ctx2.isShared()); @@ -221,12 +212,9 @@ public class TestSharedContextVBOES2NEWT0 extends UITestCase { final List<GLContext> ctx1Shares = ctx1.getCreatedShares(); final List<GLContext> ctx2Shares = ctx2.getCreatedShares(); final List<GLContext> ctx3Shares = ctx3.getCreatedShares(); - System.err.println("XXX-D-1.1:"); - MiscUtils.dumpSharedGLContext(ctx1); - System.err.println("XXX-D-1.2:"); - MiscUtils.dumpSharedGLContext(ctx2); - System.err.println("XXX-D-1.3:"); - MiscUtils.dumpSharedGLContext(ctx3); + MiscUtils.dumpSharedGLContext("XXX-D-1.1", ctx1); + MiscUtils.dumpSharedGLContext("XXX-D-1.2", ctx2); + MiscUtils.dumpSharedGLContext("XXX-D-1.3", ctx3); Assert.assertTrue("Ctx1 is not shared", ctx1.isShared()); Assert.assertTrue("Ctx2 is not shared", ctx2.isShared()); @@ -245,12 +233,9 @@ public class TestSharedContextVBOES2NEWT0 extends UITestCase { final List<GLContext> ctx1Shares = ctx1.getCreatedShares(); final List<GLContext> ctx2Shares = ctx2.getCreatedShares(); final List<GLContext> ctx3Shares = ctx3.getCreatedShares(); - System.err.println("XXX-D-2.1:"); - MiscUtils.dumpSharedGLContext(ctx1); - System.err.println("XXX-D-2.2:"); - MiscUtils.dumpSharedGLContext(ctx2); - System.err.println("XXX-D-2.3:"); - MiscUtils.dumpSharedGLContext(ctx3); + MiscUtils.dumpSharedGLContext("XXX-D-2.1", ctx1); + MiscUtils.dumpSharedGLContext("XXX-D-2.2", ctx2); + MiscUtils.dumpSharedGLContext("XXX-D-2.3", ctx3); Assert.assertTrue("Ctx1 is not shared", !ctx1.isShared()); Assert.assertTrue("Ctx2 is not shared", !ctx2.isShared()); diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2NEWT1.java b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2NEWT1.java index fb15509d0..e98957464 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2NEWT1.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2NEWT1.java @@ -153,12 +153,14 @@ public class TestSharedContextVBOES2NEWT1 extends UITestCase { Assert.assertTrue(AWTRobotUtil.waitForVisible(glWindow, true)); Assert.assertTrue(AWTRobotUtil.waitForContextCreated(glWindow, true)); - System.err.println("Master Context: "); - MiscUtils.dumpSharedGLContext(sharedDrawable.getContext()); - System.err.println("New Context: "); - MiscUtils.dumpSharedGLContext(glWindow.getContext()); + final GLContext sharedMasterContext = sharedDrawable.getContext(); + MiscUtils.dumpSharedGLContext("Master Context", sharedMasterContext); + MiscUtils.dumpSharedGLContext("New Context", glWindow.getContext()); if( useShared ) { - Assert.assertEquals("Master Context not shared as expected", true, sharedDrawable.getContext().isShared()); + Assert.assertEquals("Master Context not shared as expected", true, sharedMasterContext.isShared()); + Assert.assertEquals("Master Context is different", sharedMasterContext, glWindow.getContext().getSharedMaster()); + } else { + Assert.assertEquals("Master Context is not null", null, glWindow.getContext().getSharedMaster()); } Assert.assertEquals("New Context not shared as expected", useShared, glWindow.getContext().isShared()); @@ -169,7 +171,7 @@ public class TestSharedContextVBOES2NEWT1 extends UITestCase { return glWindow; } - @Test + // @Test public void test01CommonAnimatorSharedOnscreen() throws InterruptedException { initShared(true); final Animator animator = new Animator(); @@ -202,7 +204,7 @@ public class TestSharedContextVBOES2NEWT1 extends UITestCase { releaseShared(); } - @Test + // @Test public void test02CommonAnimatorSharedOffscreen() throws InterruptedException { initShared(false); final Animator animator = new Animator(); diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2NEWT2.java b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2NEWT2.java index a101c05d0..fb09e86ef 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2NEWT2.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2NEWT2.java @@ -55,9 +55,8 @@ import org.junit.runners.MethodSorters; * Sharing the VBO of 3 GearsES2 instances, each in their own GLWindow. * <p> * This is achieved by using the 1st GLWindow's GLContext as the <i>master</i> - * and manually triggering creation of the 2nd and 3rd GLWindow when the 1st GLWindow's - * GLContext becomes created. The trigger is performed by simply - * inserting a GLRunnable in the 1st GLWindow, which makes the other visible. + * and synchronizing via GLSharedContextSetter to postpone creation + * of the 2nd and 3rd GLWindow until the 1st GLWindow's GLContext becomes created. * </p> * <p> * Above method allows random creation of the 1st GLWindow, which triggers @@ -107,6 +106,8 @@ public class TestSharedContextVBOES2NEWT2 extends UITestCase { public void syncedOneAnimator(final boolean destroyCleanOrder) throws InterruptedException { final Animator animator = new Animator(); + animator.start(); + final GearsES2 g1 = new GearsES2(0); final GLWindow f1 = createGLWindow(0, 0, g1); animator.add(f1); @@ -116,31 +117,31 @@ public class TestSharedContextVBOES2NEWT2 extends UITestCase { g2.setSharedGears(g1); final GLWindow f2 = createGLWindow(f1.getX()+width+insets.getTotalWidth(), f1.getY()+0, g2); + f2.setSharedAutoDrawable(f1); animator.add(f2); + f2.setVisible(true); final GearsES2 g3 = new GearsES2(0); g3.setSharedGears(g1); final GLWindow f3 = createGLWindow(f1.getX()+0, f1.getY()+height+insets.getTotalHeight(), g3); + f3.setSharedAutoDrawable(f1); animator.add(f3); + f3.setVisible(true); - // f1's shared GLContext is ready ! - f1.invoke(false, new GLRunnable() { - @Override - public boolean run(final GLAutoDrawable drawable) { - Assert.assertTrue("Ctx is shared before shared creation", !f1.getContext().isShared()); - f2.setSharedAutoDrawable(f1); - f2.setVisible(true); - f2.display(); // kick off GLContext .. - f3.setSharedAutoDrawable(f1); - f3.setVisible(true); - f3.display(); // kick off GLContext .. - return true; - } - }); + Assert.assertTrue(AWTRobotUtil.waitForRealized(f1, false)); + Assert.assertTrue(AWTRobotUtil.waitForVisible(f1, false)); + Assert.assertTrue(AWTRobotUtil.waitForContextCreated(f1, false)); - f1.setVisible(true); - f1.display(); // kick off GLContext .. and hence f2 + f3 creation + Assert.assertTrue(AWTRobotUtil.waitForRealized(f2, true)); + Assert.assertTrue(AWTRobotUtil.waitForVisible(f2, true)); + Assert.assertTrue(AWTRobotUtil.waitForContextCreated(f2, false)); + + Assert.assertTrue(AWTRobotUtil.waitForRealized(f3, true)); + Assert.assertTrue(AWTRobotUtil.waitForVisible(f3, true)); + Assert.assertTrue(AWTRobotUtil.waitForContextCreated(f3, false)); + + f1.setVisible(true); // kick off f1 GLContext .. and hence allow f2 + f3 creation Assert.assertTrue(AWTRobotUtil.waitForRealized(f1, true)); Assert.assertTrue(AWTRobotUtil.waitForVisible(f1, true)); @@ -157,8 +158,6 @@ public class TestSharedContextVBOES2NEWT2 extends UITestCase { Assert.assertTrue(AWTRobotUtil.waitForContextCreated(f3, true)); Assert.assertTrue("Gears3 not initialized", g3.waitForInit(true)); - animator.start(); // post start animator, otherwise display will be suppressed - final GLContext ctx1 = f1.getContext(); final GLContext ctx2 = f2.getContext(); final GLContext ctx3 = f3.getContext(); @@ -166,12 +165,9 @@ public class TestSharedContextVBOES2NEWT2 extends UITestCase { final List<GLContext> ctx1Shares = ctx1.getCreatedShares(); final List<GLContext> ctx2Shares = ctx2.getCreatedShares(); final List<GLContext> ctx3Shares = ctx3.getCreatedShares(); - System.err.println("XXX-C-3.1:"); - MiscUtils.dumpSharedGLContext(ctx1); - System.err.println("XXX-C-3.2:"); - MiscUtils.dumpSharedGLContext(ctx2); - System.err.println("XXX-C-3.3:"); - MiscUtils.dumpSharedGLContext(ctx3); + MiscUtils.dumpSharedGLContext("XXX-C-3.1", ctx1); + MiscUtils.dumpSharedGLContext("XXX-C-3.2", ctx2); + MiscUtils.dumpSharedGLContext("XXX-C-3.3", ctx3); Assert.assertTrue("Ctx1 is not shared", ctx1.isShared()); Assert.assertTrue("Ctx2 is not shared", ctx2.isShared()); @@ -179,6 +175,9 @@ public class TestSharedContextVBOES2NEWT2 extends UITestCase { Assert.assertEquals("Ctx1 has unexpected number of created shares", 2, ctx1Shares.size()); Assert.assertEquals("Ctx2 has unexpected number of created shares", 2, ctx2Shares.size()); Assert.assertEquals("Ctx3 has unexpected number of created shares", 2, ctx3Shares.size()); + Assert.assertEquals("Ctx1 Master Context is different", ctx1, ctx1.getSharedMaster()); + Assert.assertEquals("Ctx2 Master Context is different", ctx1, ctx2.getSharedMaster()); + Assert.assertEquals("Ctx3 Master Context is different", ctx1, ctx3.getSharedMaster()); } Assert.assertTrue("Gears1 is shared", !g1.usesSharedGears()); @@ -228,7 +227,6 @@ public class TestSharedContextVBOES2NEWT2 extends UITestCase { final GLWindow f1 = createGLWindow(0, 0, g1); a1.add(f1); a1.start(); - f1.setVisible(true); final InsetsImmutable insets = f1.getInsets(); @@ -237,29 +235,34 @@ public class TestSharedContextVBOES2NEWT2 extends UITestCase { g2.setSharedGears(g1); final GLWindow f2 = createGLWindow(f1.getX()+width+insets.getTotalWidth(), f1.getY()+0, g2); + f2.setSharedAutoDrawable(f1); a2.add(f2); a2.start(); + f2.setVisible(true); final Animator a3 = new Animator(); final GearsES2 g3 = new GearsES2(0); g3.setSharedGears(g1); final GLWindow f3 = createGLWindow(f1.getX()+0, f1.getY()+height+insets.getTotalHeight(), g3); + f3.setSharedAutoDrawable(f1); a3.add(f3); a3.start(); + f3.setVisible(true); - // f1's shared GLContext is ready ! - f1.invoke(false, new GLRunnable() { - @Override - public boolean run(final GLAutoDrawable drawable) { - Assert.assertTrue("Ctx is shared before shared creation", !f1.getContext().isShared()); - f2.setSharedAutoDrawable(f1); - f2.setVisible(true); - f3.setSharedAutoDrawable(f1); - f3.setVisible(true); - return true; - } - }); + Assert.assertTrue(AWTRobotUtil.waitForRealized(f1, false)); + Assert.assertTrue(AWTRobotUtil.waitForVisible(f1, false)); + Assert.assertTrue(AWTRobotUtil.waitForContextCreated(f1, false)); + + Assert.assertTrue(AWTRobotUtil.waitForRealized(f2, true)); + Assert.assertTrue(AWTRobotUtil.waitForVisible(f2, true)); + Assert.assertTrue(AWTRobotUtil.waitForContextCreated(f2, false)); + + Assert.assertTrue(AWTRobotUtil.waitForRealized(f3, true)); + Assert.assertTrue(AWTRobotUtil.waitForVisible(f3, true)); + Assert.assertTrue(AWTRobotUtil.waitForContextCreated(f3, false)); + + f1.setVisible(true); // kicks off f1 GLContext .. and hence gears of f2 + f3 completion Assert.assertTrue(AWTRobotUtil.waitForRealized(f1, true)); Assert.assertTrue(AWTRobotUtil.waitForVisible(f1, true)); @@ -282,12 +285,9 @@ public class TestSharedContextVBOES2NEWT2 extends UITestCase { final List<GLContext> ctx1Shares = ctx1.getCreatedShares(); final List<GLContext> ctx2Shares = ctx2.getCreatedShares(); final List<GLContext> ctx3Shares = ctx3.getCreatedShares(); - System.err.println("XXX-C-3.1:"); - MiscUtils.dumpSharedGLContext(ctx1); - System.err.println("XXX-C-3.2:"); - MiscUtils.dumpSharedGLContext(ctx2); - System.err.println("XXX-C-3.3:"); - MiscUtils.dumpSharedGLContext(ctx3); + MiscUtils.dumpSharedGLContext("XXX-C-3.1", ctx1); + MiscUtils.dumpSharedGLContext("XXX-C-3.2", ctx2); + MiscUtils.dumpSharedGLContext("XXX-C-3.3", ctx3); Assert.assertTrue("Ctx1 is not shared", ctx1.isShared()); Assert.assertTrue("Ctx2 is not shared", ctx2.isShared()); @@ -295,6 +295,9 @@ public class TestSharedContextVBOES2NEWT2 extends UITestCase { Assert.assertEquals("Ctx1 has unexpected number of created shares", 2, ctx1Shares.size()); Assert.assertEquals("Ctx2 has unexpected number of created shares", 2, ctx2Shares.size()); Assert.assertEquals("Ctx3 has unexpected number of created shares", 2, ctx3Shares.size()); + Assert.assertEquals("Ctx1 Master Context is different", ctx1, ctx1.getSharedMaster()); + Assert.assertEquals("Ctx2 Master Context is different", ctx1, ctx2.getSharedMaster()); + Assert.assertEquals("Ctx3 Master Context is different", ctx1, ctx3.getSharedMaster()); } Assert.assertTrue("Gears1 is shared", !g1.usesSharedGears()); diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2NEWT3.java b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2NEWT3.java index bfd1a92ce..852b7193e 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2NEWT3.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2NEWT3.java @@ -53,7 +53,7 @@ import org.junit.runners.MethodSorters; * Sharing the VBO of 3 GearsES2 instances, each in their own GLWindow. * <p> * This is achieved by using the 1st GLWindow as the <i>master</i> - * and using the build-in blocking mechanism to postpone creation + * and synchronizing via GLSharedContextSetter to postpone creation * of the 2nd and 3rd GLWindow until the 1st GLWindow's GLContext becomes created. * </p> * <p> @@ -112,6 +112,8 @@ public class TestSharedContextVBOES2NEWT3 extends UITestCase { public void syncedOneAnimator(final boolean destroyCleanOrder, final boolean useMappedBuffers) throws InterruptedException { final Animator animator = new Animator(); + animator.start(); + final GearsES2 g1 = new GearsES2(0); g1.setUseMappedBuffers(useMappedBuffers); g1.setValidateBuffers(true); @@ -125,20 +127,17 @@ public class TestSharedContextVBOES2NEWT3 extends UITestCase { f1.getY()+0, g2); f2.setSharedAutoDrawable(f1); animator.add(f2); + f2.setVisible(true); // shall wait until f1 is ready - final GearsES2 g3 = new GearsES2(0); - g3.setSharedGears(g1); - final GLWindow f3 = createGLWindow(f1.getX()+0, - f1.getY()+height+insets.getTotalHeight(), g3); - f3.setSharedAutoDrawable(f1); - animator.add(f3); + Assert.assertTrue(AWTRobotUtil.waitForRealized(f1, false)); + Assert.assertTrue(AWTRobotUtil.waitForVisible(f1, false)); + Assert.assertTrue(AWTRobotUtil.waitForContextCreated(f1, false)); - f2.setVisible(true); // shall wait until f1 is ready - f1.setVisible(true); // master .. - f3.setVisible(true); // shall wait until f1 is ready - animator.start(); // kicks off GLContext .. and hence gears of f2 + f3 completion + Assert.assertTrue(AWTRobotUtil.waitForRealized(f2, true)); + Assert.assertTrue(AWTRobotUtil.waitForVisible(f2, true)); + Assert.assertTrue(AWTRobotUtil.waitForContextCreated(f2, false)); - Thread.sleep(1000/60*10); // wait ~10 frames giving a chance to create (blocking until master share is valid) + f1.setVisible(true); // kicks off f1 GLContext .. and hence gears of f2 + f3 completion Assert.assertTrue(AWTRobotUtil.waitForRealized(f1, true)); Assert.assertTrue(AWTRobotUtil.waitForVisible(f1, true)); @@ -150,6 +149,14 @@ public class TestSharedContextVBOES2NEWT3 extends UITestCase { Assert.assertTrue(AWTRobotUtil.waitForContextCreated(f2, true)); Assert.assertTrue("Gears2 not initialized", g2.waitForInit(true)); + final GearsES2 g3 = new GearsES2(0); + g3.setSharedGears(g1); + final GLWindow f3 = createGLWindow(f1.getX()+0, + f1.getY()+height+insets.getTotalHeight(), g3); + f3.setSharedAutoDrawable(f1); + animator.add(f3); + f3.setVisible(true); // shall wait until f1 is ready + Assert.assertTrue(AWTRobotUtil.waitForRealized(f3, true)); Assert.assertTrue(AWTRobotUtil.waitForVisible(f3, true)); Assert.assertTrue(AWTRobotUtil.waitForContextCreated(f3, true)); @@ -162,12 +169,9 @@ public class TestSharedContextVBOES2NEWT3 extends UITestCase { final List<GLContext> ctx1Shares = ctx1.getCreatedShares(); final List<GLContext> ctx2Shares = ctx2.getCreatedShares(); final List<GLContext> ctx3Shares = ctx3.getCreatedShares(); - System.err.println("XXX-C-3.1:"); - MiscUtils.dumpSharedGLContext(ctx1); - System.err.println("XXX-C-3.2:"); - MiscUtils.dumpSharedGLContext(ctx2); - System.err.println("XXX-C-3.3:"); - MiscUtils.dumpSharedGLContext(ctx3); + MiscUtils.dumpSharedGLContext("XXX-C-3.1", ctx1); + MiscUtils.dumpSharedGLContext("XXX-C-3.2", ctx2); + MiscUtils.dumpSharedGLContext("XXX-C-3.3", ctx3); Assert.assertTrue("Ctx1 is not shared", ctx1.isShared()); Assert.assertTrue("Ctx2 is not shared", ctx2.isShared()); @@ -175,6 +179,9 @@ public class TestSharedContextVBOES2NEWT3 extends UITestCase { Assert.assertEquals("Ctx1 has unexpected number of created shares", 2, ctx1Shares.size()); Assert.assertEquals("Ctx2 has unexpected number of created shares", 2, ctx2Shares.size()); Assert.assertEquals("Ctx3 has unexpected number of created shares", 2, ctx3Shares.size()); + Assert.assertEquals("Ctx1 Master Context is different", ctx1, ctx1.getSharedMaster()); + Assert.assertEquals("Ctx2 Master Context is different", ctx1, ctx2.getSharedMaster()); + Assert.assertEquals("Ctx3 Master Context is different", ctx1, ctx3.getSharedMaster()); } Assert.assertTrue("Gears1 is shared", !g1.usesSharedGears()); @@ -246,7 +253,6 @@ public class TestSharedContextVBOES2NEWT3 extends UITestCase { final GLWindow f1 = createGLWindow(0, 0, g1); a1.add(f1); a1.start(); - // f1.setVisible(true); // we do this post f2 .. to test pending creation! final InsetsImmutable insets = f1.getInsets(); @@ -260,19 +266,15 @@ public class TestSharedContextVBOES2NEWT3 extends UITestCase { a2.start(); f2.setVisible(true); - f1.setVisible(true); // test pending creation of f2 + Assert.assertTrue(AWTRobotUtil.waitForRealized(f1, false)); + Assert.assertTrue(AWTRobotUtil.waitForVisible(f1, false)); + Assert.assertTrue(AWTRobotUtil.waitForContextCreated(f1, false)); - final Animator a3 = new Animator(); - final GearsES2 g3 = new GearsES2(0); - g3.setSharedGears(g1); - final GLWindow f3 = createGLWindow(f1.getX()+0, - f1.getY()+height+insets.getTotalHeight(), g3); - f3.setSharedAutoDrawable(f1); - a3.add(f3); - a3.start(); - f3.setVisible(true); + Assert.assertTrue(AWTRobotUtil.waitForRealized(f2, true)); + Assert.assertTrue(AWTRobotUtil.waitForVisible(f2, true)); + Assert.assertTrue(AWTRobotUtil.waitForContextCreated(f2, false)); - Thread.sleep(1000/60*10); // wait ~10 frames giving a chance to create (blocking until master share is valid) + f1.setVisible(true); // test pending creation of f2 Assert.assertTrue(AWTRobotUtil.waitForRealized(f1, true)); Assert.assertTrue(AWTRobotUtil.waitForVisible(f1, true)); @@ -284,6 +286,16 @@ public class TestSharedContextVBOES2NEWT3 extends UITestCase { Assert.assertTrue(AWTRobotUtil.waitForContextCreated(f2, true)); Assert.assertTrue("Gears2 not initialized", g2.waitForInit(true)); + final Animator a3 = new Animator(); + final GearsES2 g3 = new GearsES2(0); + g3.setSharedGears(g1); + final GLWindow f3 = createGLWindow(f1.getX()+0, + f1.getY()+height+insets.getTotalHeight(), g3); + f3.setSharedAutoDrawable(f1); + a3.add(f3); + a3.start(); + f3.setVisible(true); + Assert.assertTrue(AWTRobotUtil.waitForRealized(f3, true)); Assert.assertTrue(AWTRobotUtil.waitForVisible(f3, true)); Assert.assertTrue(AWTRobotUtil.waitForContextCreated(f3, true)); @@ -296,12 +308,9 @@ public class TestSharedContextVBOES2NEWT3 extends UITestCase { final List<GLContext> ctx1Shares = ctx1.getCreatedShares(); final List<GLContext> ctx2Shares = ctx2.getCreatedShares(); final List<GLContext> ctx3Shares = ctx3.getCreatedShares(); - System.err.println("XXX-C-3.1:"); - MiscUtils.dumpSharedGLContext(ctx1); - System.err.println("XXX-C-3.2:"); - MiscUtils.dumpSharedGLContext(ctx2); - System.err.println("XXX-C-3.3:"); - MiscUtils.dumpSharedGLContext(ctx3); + MiscUtils.dumpSharedGLContext("XXX-C-3.1", ctx1); + MiscUtils.dumpSharedGLContext("XXX-C-3.2", ctx2); + MiscUtils.dumpSharedGLContext("XXX-C-3.3", ctx3); Assert.assertTrue("Ctx1 is not shared", ctx1.isShared()); Assert.assertTrue("Ctx2 is not shared", ctx2.isShared()); @@ -309,6 +318,9 @@ public class TestSharedContextVBOES2NEWT3 extends UITestCase { Assert.assertEquals("Ctx1 has unexpected number of created shares", 2, ctx1Shares.size()); Assert.assertEquals("Ctx2 has unexpected number of created shares", 2, ctx2Shares.size()); Assert.assertEquals("Ctx3 has unexpected number of created shares", 2, ctx3Shares.size()); + Assert.assertEquals("Ctx1 Master Context is different", ctx1, ctx1.getSharedMaster()); + Assert.assertEquals("Ctx2 Master Context is different", ctx1, ctx2.getSharedMaster()); + Assert.assertEquals("Ctx3 Master Context is different", ctx1, ctx3.getSharedMaster()); } Assert.assertTrue("Gears1 is shared", !g1.usesSharedGears()); diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2NEWT4.java b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2NEWT4.java new file mode 100644 index 000000000..804badbc3 --- /dev/null +++ b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2NEWT4.java @@ -0,0 +1,231 @@ +/** + * Copyright 2010 JogAmp Community. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of JogAmp Community. + */ + +package com.jogamp.opengl.test.junit.jogl.acore; + +import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; + +import com.jogamp.newt.opengl.GLWindow; + +import javax.media.nativewindow.util.InsetsImmutable; +import javax.media.opengl.GLAnimatorControl; +import javax.media.opengl.GLAutoDrawable; +import javax.media.opengl.GLCapabilities; +import javax.media.opengl.GLContext; +import javax.media.opengl.GLProfile; + +import com.jogamp.opengl.util.Animator; +import com.jogamp.opengl.test.junit.util.AWTRobotUtil; +import com.jogamp.opengl.test.junit.util.MiscUtils; +import com.jogamp.opengl.test.junit.util.UITestCase; +import com.jogamp.opengl.test.junit.jogl.demos.es2.GearsES2; + +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.FixMethodOrder; +import org.junit.runners.MethodSorters; + +/** + * Test sharing w/ different shared-master context. + * <p> + * This is achieved by using the 1st GLWindow as the <i>master</i> + * and synchronizing via GLSharedContextSetter to postpone creation + * of the 2nd and 3rd GLWindow until the 1st GLWindow's GLContext becomes created. + * </p> + */ +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class TestSharedContextVBOES2NEWT4 extends UITestCase { + static GLProfile glp; + static GLCapabilities caps; + static int width, height; + + @BeforeClass + public static void initClass() { + if(GLProfile.isAvailable(GLProfile.GL2ES2)) { + glp = GLProfile.get(GLProfile.GL2ES2); + Assert.assertNotNull(glp); + caps = new GLCapabilities(glp); + Assert.assertNotNull(caps); + width = 256; + height = 256; + } else { + setTestSupported(false); + } + } + + protected GLWindow createGLWindow(final int x, final int y, final GearsES2 gears) throws InterruptedException { + final GLWindow glWindow = GLWindow.create(caps); + Assert.assertNotNull(glWindow); + glWindow.setPosition(x, y); + glWindow.setTitle("Shared Gears NEWT Test: "+x+"/"+y+" shared true"); + glWindow.setSize(width, height); + glWindow.addGLEventListener(gears); + + return glWindow; + } + + @Test + public void test01() throws InterruptedException { + final Animator animator = new Animator(); + animator.start(); + + final GearsES2 g1 = new GearsES2(0); + final GLWindow f1 = createGLWindow(0, 0, g1); + animator.add(f1); + final InsetsImmutable insets = f1.getInsets(); + + final GearsES2 g2 = new GearsES2(0); + g2.setSharedGears(g1); + final GLWindow f2 = createGLWindow(f1.getX()+width+insets.getTotalWidth(), + f1.getY()+0, g2); + f2.setSharedAutoDrawable(f1); + animator.add(f2); + f2.setVisible(true); + + final GearsES2 g3 = new GearsES2(0); + g3.setSharedGears(g1); + final GLWindow f3 = createGLWindow(f1.getX()+0, + f1.getY()+height+insets.getTotalHeight(), g3); + f3.setSharedAutoDrawable(f2); // Mixed master! + animator.add(f3); + final AtomicBoolean gotAnimException = new AtomicBoolean(false); + final AtomicBoolean gotOtherException = new AtomicBoolean(false); + animator.setUncaughtExceptionHandler(new GLAnimatorControl.UncaughtExceptionHandler() { + @Override + public void uncaughtException(final GLAnimatorControl _animator, final GLAutoDrawable _drawable, final Throwable _cause) { + if( _animator == animator && _drawable == f3 && _cause instanceof RuntimeException ) { + System.err.println("Caught expected exception: "+_cause.getMessage()); + gotAnimException.set(true); + } else { + System.err.println("Caught unexpected exception: "+_cause.getMessage()); + _cause.printStackTrace(); + gotOtherException.set(true); + } + } + }); + f3.setVisible(true); + + Assert.assertTrue(AWTRobotUtil.waitForRealized(f1, false)); + Assert.assertTrue(AWTRobotUtil.waitForVisible(f1, false)); + Assert.assertTrue(AWTRobotUtil.waitForContextCreated(f1, false)); + + Assert.assertTrue(AWTRobotUtil.waitForRealized(f2, true)); + Assert.assertTrue(AWTRobotUtil.waitForVisible(f2, true)); + Assert.assertTrue(AWTRobotUtil.waitForContextCreated(f2, false)); + + Assert.assertTrue(AWTRobotUtil.waitForRealized(f3, true)); + Assert.assertTrue(AWTRobotUtil.waitForVisible(f3, true)); + Assert.assertTrue(AWTRobotUtil.waitForContextCreated(f3, false)); + + f1.setVisible(true); // kick off f1 GLContext .. and hence allow f2 + f3 creation + + Assert.assertTrue(AWTRobotUtil.waitForRealized(f1, true)); + Assert.assertTrue(AWTRobotUtil.waitForVisible(f1, true)); + Assert.assertTrue(AWTRobotUtil.waitForContextCreated(f1, true)); + Assert.assertTrue("Gears1 not initialized", g1.waitForInit(true)); + + Assert.assertTrue(AWTRobotUtil.waitForRealized(f2, true)); + Assert.assertTrue(AWTRobotUtil.waitForVisible(f2, true)); + Assert.assertTrue(AWTRobotUtil.waitForContextCreated(f2, true)); + Assert.assertTrue("Gears2 not initialized", g2.waitForInit(true)); + + Assert.assertTrue(AWTRobotUtil.waitForRealized(f3, true)); + Assert.assertTrue(AWTRobotUtil.waitForVisible(f3, true)); + Assert.assertTrue(AWTRobotUtil.waitForContextCreated(f3, true)); + Assert.assertTrue("Gears3 not initialized", g3.waitForInit(true)); + + Assert.assertFalse("Unexpected exception (animator) caught", gotAnimException.get()); + Assert.assertFalse("Unexpected exception (other) caught", gotOtherException.get()); + + final GLContext ctx1 = f1.getContext(); + final GLContext ctx2 = f2.getContext(); + final GLContext ctx3 = f3.getContext(); + { + final List<GLContext> ctx1Shares = ctx1.getCreatedShares(); + final List<GLContext> ctx2Shares = ctx2.getCreatedShares(); + final List<GLContext> ctx3Shares = ctx3.getCreatedShares(); + MiscUtils.dumpSharedGLContext("XXX-C-3.1", ctx1); + MiscUtils.dumpSharedGLContext("XXX-C-3.2", ctx2); + MiscUtils.dumpSharedGLContext("XXX-C-3.3", ctx3); + + Assert.assertTrue("Ctx1 is not shared", ctx1.isShared()); + Assert.assertTrue("Ctx2 is not shared", ctx2.isShared()); + Assert.assertTrue("Ctx3 is not shared", ctx3.isShared()); + Assert.assertEquals("Ctx1 has unexpected number of created shares", 2, ctx1Shares.size()); + Assert.assertEquals("Ctx2 has unexpected number of created shares", 2, ctx2Shares.size()); + Assert.assertEquals("Ctx3 has unexpected number of created shares", 2, ctx3Shares.size()); + Assert.assertEquals("Ctx1 Master Context is different", ctx1, ctx1.getSharedMaster()); + Assert.assertEquals("Ctx2 Master Context is different", ctx1, ctx2.getSharedMaster()); + Assert.assertEquals("Ctx3 Master Context is different", ctx2, ctx3.getSharedMaster()); // Mixed master! + } + + Assert.assertTrue("Gears1 is shared", !g1.usesSharedGears()); + Assert.assertTrue("Gears2 is not shared", g2.usesSharedGears()); + Assert.assertTrue("Gears3 is not shared", g3.usesSharedGears()); + + try { + Thread.sleep(duration); + } catch(final Exception e) { + e.printStackTrace(); + } + animator.stop(); + Assert.assertEquals(false, animator.isAnimating()); + + System.err.println("XXX Destroy in clean order NOW"); + f3.destroy(); + f2.destroy(); + f1.destroy(); + + Assert.assertTrue(AWTRobotUtil.waitForVisible(f1, false)); + Assert.assertTrue(AWTRobotUtil.waitForRealized(f1, false)); + Assert.assertTrue(AWTRobotUtil.waitForVisible(f2, false)); + Assert.assertTrue(AWTRobotUtil.waitForRealized(f2, false)); + Assert.assertTrue(AWTRobotUtil.waitForVisible(f3, false)); + Assert.assertTrue(AWTRobotUtil.waitForRealized(f3, false)); + } + + static long duration = 1000; // ms + + public static void main(final String args[]) { + for(int i=0; i<args.length; i++) { + if(args[i].equals("-time")) { + i++; + try { + duration = Integer.parseInt(args[i]); + } catch (final Exception ex) { ex.printStackTrace(); } + } + } + /** + BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); + System.err.println("Press enter to continue"); + System.err.println(stdin.readLine()); */ + org.junit.runner.JUnitCore.main(TestSharedContextVBOES2NEWT4.class.getName()); + } +} diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2SWT3.java b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2SWT3.java index 90cb503ce..09f4408f1 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2SWT3.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2SWT3.java @@ -220,12 +220,9 @@ public class TestSharedContextVBOES2SWT3 extends UITestCase { final List<GLContext> ctx1Shares = ctx1.getCreatedShares(); final List<GLContext> ctx2Shares = ctx2.getCreatedShares(); final List<GLContext> ctx3Shares = ctx3.getCreatedShares(); - System.err.println("XXX-C-3.1:"); - MiscUtils.dumpSharedGLContext(ctx1); - System.err.println("XXX-C-3.2:"); - MiscUtils.dumpSharedGLContext(ctx2); - System.err.println("XXX-C-3.3:"); - MiscUtils.dumpSharedGLContext(ctx3); + MiscUtils.dumpSharedGLContext("XXX-C-3.1", ctx1); + MiscUtils.dumpSharedGLContext("XXX-C-3.2", ctx2); + MiscUtils.dumpSharedGLContext("XXX-C-3.3", ctx3); Assert.assertTrue("Ctx1 is not shared", ctx1.isShared()); Assert.assertTrue("Ctx2 is not shared", ctx2.isShared()); @@ -314,12 +311,9 @@ public class TestSharedContextVBOES2SWT3 extends UITestCase { final List<GLContext> ctx1Shares = ctx1.getCreatedShares(); final List<GLContext> ctx2Shares = ctx2.getCreatedShares(); final List<GLContext> ctx3Shares = ctx3.getCreatedShares(); - System.err.println("XXX-C-3.1:"); - MiscUtils.dumpSharedGLContext(ctx1); - System.err.println("XXX-C-3.2:"); - MiscUtils.dumpSharedGLContext(ctx2); - System.err.println("XXX-C-3.3:"); - MiscUtils.dumpSharedGLContext(ctx3); + MiscUtils.dumpSharedGLContext("XXX-C-3.1", ctx1); + MiscUtils.dumpSharedGLContext("XXX-C-3.2", ctx2); + MiscUtils.dumpSharedGLContext("XXX-C-3.2", ctx3); Assert.assertTrue("Ctx1 is not shared", ctx1.isShared()); Assert.assertTrue("Ctx2 is not shared", ctx2.isShared()); diff --git a/src/test/com/jogamp/opengl/test/junit/util/MiscUtils.java b/src/test/com/jogamp/opengl/test/junit/util/MiscUtils.java index e401534bd..7100e1e1a 100644 --- a/src/test/com/jogamp/opengl/test/junit/util/MiscUtils.java +++ b/src/test/com/jogamp/opengl/test/junit/util/MiscUtils.java @@ -214,21 +214,23 @@ public class MiscUtils { } } - public static void dumpSharedGLContext(final GLContext self) { + public static void dumpSharedGLContext(final String prefix, final GLContext self) { int i = 0, j = 0; - System.err.println("Myself: hash 0x"+Integer.toHexString(self.hashCode())+", \t(isShared "+self.isShared()+", created "+self.isCreated()+")"); + final GLContext master = self.getSharedMaster(); + final int masterHash = null != master ? master.hashCode() : 0; + System.err.println(prefix+": hash 0x"+Integer.toHexString(self.hashCode())+", \t(isShared "+self.isShared()+", created "+self.isCreated()+", master 0x"+Integer.toHexString(masterHash)+")"); { final List<GLContext> set = self.getCreatedShares(); for (final Iterator<GLContext> iter = set.iterator(); iter.hasNext(); ) { final GLContext c = iter.next(); - System.err.println("Ctx #"+(i++)+": hash 0x"+Integer.toHexString(c.hashCode())+", \t(created "+c.isCreated()+")"); + System.err.println(" Created Ctx #"+(i++)+": hash 0x"+Integer.toHexString(c.hashCode())+", \t(created "+c.isCreated()+")"); } } { final List<GLContext> set = self.getDestroyedShares(); for (final Iterator<GLContext> iter = set.iterator(); iter.hasNext(); ) { final GLContext c = iter.next(); - System.err.println("Ctx #"+(j++)+": hash 0x"+Integer.toHexString(c.hashCode())+", \t(created "+c.isCreated()+")"); + System.err.println(" Destroyed Ctx #"+(j++)+": hash 0x"+Integer.toHexString(c.hashCode())+", \t(created "+c.isCreated()+")"); } } System.err.println("\t Total created "+i+" + destroyed "+j+" = "+(i+j)); |