diff options
-rw-r--r-- | make/scripts/tests-osx-junit-swt.sh (renamed from make/scripts/tests-macosx64-junit-swt.sh) | 0 | ||||
-rwxr-xr-x | make/scripts/tests-osx-x64-java8.sh | 18 | ||||
-rwxr-xr-x | make/scripts/tests-osx-x64.sh | 2 | ||||
-rw-r--r-- | make/scripts/tests.sh | 8 | ||||
-rw-r--r-- | src/jogl/classes/jogamp/opengl/macosx/cgl/MacOSXCGLContext.java | 2 | ||||
-rw-r--r-- | src/nativewindow/classes/com/jogamp/nativewindow/awt/JAWTWindow.java | 3 | ||||
-rw-r--r-- | src/nativewindow/classes/jogamp/nativewindow/jawt/macosx/MacOSXJAWTWindow.java | 7 | ||||
-rw-r--r-- | src/nativewindow/classes/jogamp/nativewindow/macosx/OSXUtil.java | 7 | ||||
-rw-r--r-- | src/nativewindow/native/macosx/OSXmisc.m | 9 | ||||
-rw-r--r-- | src/test/com/jogamp/opengl/test/junit/jogl/demos/gl2/awt/TestGearsAWT.java | 6 |
10 files changed, 44 insertions, 18 deletions
diff --git a/make/scripts/tests-macosx64-junit-swt.sh b/make/scripts/tests-osx-junit-swt.sh index 2a6ccd63a..2a6ccd63a 100644 --- a/make/scripts/tests-macosx64-junit-swt.sh +++ b/make/scripts/tests-osx-junit-swt.sh diff --git a/make/scripts/tests-osx-x64-java8.sh b/make/scripts/tests-osx-x64-java8.sh new file mode 100755 index 000000000..7643919bc --- /dev/null +++ b/make/scripts/tests-osx-x64-java8.sh @@ -0,0 +1,18 @@ +#! /bin/bash + +#export DYLD_LIBRARY_PATH=$HOME/ffmpeg-0.8_0.9/lib:$DYLD_LIBRARY_PATH +#export DYLD_LIBRARY_PATH=$HOME/ffmpeg-2.2.3/lib:$DYLD_LIBRARY_PATH +export DYLD_LIBRARY_PATH=/usr/local/Cellar/ffmpeg/2.8/lib:$DYLD_LIBRARY_PATH + +#JAVA_HOME=`/usr/libexec/java_home` +JAVA_HOME=`/usr/libexec/java_home -version 1.8` +#JAVA_HOME=`/usr/libexec/java_home -version 11` +PATH=$JAVA_HOME/bin:$PATH +export JAVA_HOME PATH + +export SWT_CLASSPATH=`pwd`/lib/swt/cocoa-macosx-x86_64/swt.jar + +spath=`dirname $0` + +. $spath/tests.sh $JAVA_HOME/bin/java -DummyArg ../build-macosx $* + diff --git a/make/scripts/tests-osx-x64.sh b/make/scripts/tests-osx-x64.sh index d0f244e93..67f3aaa50 100755 --- a/make/scripts/tests-osx-x64.sh +++ b/make/scripts/tests-osx-x64.sh @@ -14,5 +14,5 @@ export SWT_CLASSPATH=`pwd`/lib/swt/cocoa-macosx-x86_64/swt.jar spath=`dirname $0` -. $spath/tests.sh $JAVA_HOME/bin/java -DummyArg ../build-macosx $* +. $spath/tests.sh $JAVA_HOME/bin/java --illegal-access=warn ../build-macosx $* diff --git a/make/scripts/tests.sh b/make/scripts/tests.sh index 95917b7b5..75faeae3a 100644 --- a/make/scripts/tests.sh +++ b/make/scripts/tests.sh @@ -107,7 +107,7 @@ function jrun() { #D_ARGS="-Djogl.debug.DebugGL -Djogl.debug.TraceGL -Dnativewindow.debug=all -Djogl.debug=all -Dnewt.debug=all" #D_ARGS="-Djogl.debug.GLProfile -Djogl.debug.GLContext -Djogl.quirks.force=GL3CompatNonCompliant,NoSurfacelessCtx -Djogl.disable.opengles" #D_ARGS="-Djogl.quirks.force=NoDoubleBufferedPBuffer" - D_ARGS="-Dnativewindow.debug.GraphicsConfiguration" + #D_ARGS="-Dnativewindow.debug.GraphicsConfiguration" #D_ARGS="-Djogamp.common.utils.locks.Lock.timeout=600000" #D_ARGS="-Djogamp.debug=all" @@ -120,7 +120,9 @@ function jrun() { #D_ARGS="-Djogamp.debug=all -Dnativewindow.debug=all -Djogl.debug=all -Dnewt.debug=all" #D_ARGS="-Dnativewindow.debug.JAWT -Djogamp.debug.UnsafeUtil" + #D_ARGS="-Dnativewindow.debug.OSXUtil -Dnativewindow.debug.JAWT -Djogl.debug.GLContext -Djogl.debug.GLCanvas" #X_ARGS="--illegal-access=warn" + #D_ARGS="-Djogamp.debug.NativeLibrary=true -Djogamp.debug.JNILibLoader=true" #D_ARGS="-Djogl.debug.GLContext -Djogamp.debug.NativeLibrary -Djogamp.debug.JNILibLoader -Djogl.debug.DebugGL -Djogl.debug.GLDebugMessageHandler" #D_ARGS="-Djogamp.debug.ProcAddressHelper -Djogamp.debug.NativeLibrary -Djogamp.debug.NativeLibrary.Lookup -Djogamp.debug.JNILibLoader -Djogl.debug.GLContext" @@ -947,7 +949,7 @@ function testawtswt() { # 2.4.0 Regressions # # OSX -#testawt com.jogamp.opengl.test.junit.jogl.demos.gl2.awt.TestGearsAWT $* +testawt com.jogamp.opengl.test.junit.jogl.demos.gl2.awt.TestGearsAWT $* #testawt com.jogamp.opengl.test.junit.newt.parenting.TestParenting01dAWT $* # Linux Mesa/AMD: @@ -959,7 +961,7 @@ function testawtswt() { # Linux Mesa/Soft #testnoawt com.jogamp.opengl.test.junit.jogl.math.TestPMVMatrix01NEWT $* #testnoawt com.jogamp.opengl.test.junit.jogl.acore.TestGLProfile01NEWT $* -testnoawt com.jogamp.opengl.test.junit.jogl.acore.TestGLProfile03NEWTOffscreen $* +#testnoawt com.jogamp.opengl.test.junit.jogl.acore.TestGLProfile03NEWTOffscreen $* #testnoawt com.jogamp.opengl.test.junit.jogl.acore.TestMainVersionGLWindowNEWT $* # ATI/Linux: XCB Unknown request in queue while dequeuing diff --git a/src/jogl/classes/jogamp/opengl/macosx/cgl/MacOSXCGLContext.java b/src/jogl/classes/jogamp/opengl/macosx/cgl/MacOSXCGLContext.java index 995ff870e..718216315 100644 --- a/src/jogl/classes/jogamp/opengl/macosx/cgl/MacOSXCGLContext.java +++ b/src/jogl/classes/jogamp/opengl/macosx/cgl/MacOSXCGLContext.java @@ -924,7 +924,7 @@ public class MacOSXCGLContext extends GLContextImpl // All CALayer lifecycle ops are deferred on main-thread final DetachGLLayerCmd dCmd = new DetachGLLayerCmd(cmd); if(DEBUG) { - System.err.println("MaxOSXCGLContext.NSOpenGLImpl.associateDrawable(false): "+dCmd); + System.err.println("MaxOSXCGLContext.NSOpenGLImpl.associateDrawable(false): "+dCmd+" - "+Thread.currentThread().getName()); } OSXUtil.RunOnMainThread(false, true /* kickNSApp */, dCmd); if( null != gl3ShaderProgram ) { diff --git a/src/nativewindow/classes/com/jogamp/nativewindow/awt/JAWTWindow.java b/src/nativewindow/classes/com/jogamp/nativewindow/awt/JAWTWindow.java index 71a7602e6..5b8171e96 100644 --- a/src/nativewindow/classes/com/jogamp/nativewindow/awt/JAWTWindow.java +++ b/src/nativewindow/classes/com/jogamp/nativewindow/awt/JAWTWindow.java @@ -270,6 +270,7 @@ public abstract class JAWTWindow implements NativeWindow, OffscreenLayerSurface, invalidateNative(); jawt = null; awtConfig = null; + offscreenSurfaceLayer = 0; // Bug 1389 isOffscreenLayerSurface = false; drawable= 0; drawable_old = 0; @@ -534,7 +535,7 @@ public abstract class JAWTWindow implements NativeWindow, OffscreenLayerSurface, throw new NativeWindowException("No offscreen layer attached: "+this); } if(DEBUG) { - System.err.println("JAWTWindow.detachSurfaceHandle(): osh "+toHexString(offscreenSurfaceLayer)); + System.err.println("JAWTWindow.detachSurfaceHandle(): osh "+toHexString(offscreenSurfaceLayer)+" - "+Thread.currentThread().getName()); } detachSurfaceLayerImpl(offscreenSurfaceLayer, detachSurfaceLayerNotify); } diff --git a/src/nativewindow/classes/jogamp/nativewindow/jawt/macosx/MacOSXJAWTWindow.java b/src/nativewindow/classes/jogamp/nativewindow/jawt/macosx/MacOSXJAWTWindow.java index 5a0c8a79a..f67cc7189 100644 --- a/src/nativewindow/classes/jogamp/nativewindow/jawt/macosx/MacOSXJAWTWindow.java +++ b/src/nativewindow/classes/jogamp/nativewindow/jawt/macosx/MacOSXJAWTWindow.java @@ -89,6 +89,7 @@ public class MacOSXJAWTWindow extends JAWTWindow implements MutableSurface { ", osd-set "+offscreenSurfaceDrawableSet+ ", osd "+toHexString(offscreenSurfaceDrawable)+ ", osl "+toHexString(getAttachedSurfaceLayer())+ + ", jsl "+toHexString(jawtSurfaceLayersHandle)+ ", rsl "+toHexString(rootSurfaceLayer)+ ", wh "+toHexString(windowHandle)+" - "+Thread.currentThread().getName()); } @@ -98,9 +99,13 @@ public class MacOSXJAWTWindow extends JAWTWindow implements MutableSurface { if(0 != windowHandle) { OSXUtil.DestroyNSWindow(windowHandle); } + final long _offscreenSurfaceLayer = getAttachedSurfaceLayer(); // Bug 1389 OSXUtil.RunOnMainThread(false, true /* kickNSApp */, new Runnable() { @Override public void run() { + if( 0 != _offscreenSurfaceLayer ) { // Bug 1389 + OSXUtil.RemoveCASublayer(rootSurfaceLayer, _offscreenSurfaceLayer, true); + } if( 0 != jawtSurfaceLayersHandle) { // null rootSurfaceLayer OK UnsetJAWTRootSurfaceLayer0(jawtSurfaceLayersHandle, rootSurfaceLayer); @@ -211,7 +216,7 @@ public class MacOSXJAWTWindow extends JAWTWindow implements MutableSurface { @Override public void run() { detachNotify.run(); - OSXUtil.RemoveCASublayer(rootSurfaceLayer, layerHandle); + OSXUtil.RemoveCASublayer(rootSurfaceLayer, layerHandle, false); } }); } diff --git a/src/nativewindow/classes/jogamp/nativewindow/macosx/OSXUtil.java b/src/nativewindow/classes/jogamp/nativewindow/macosx/OSXUtil.java index e93c9574f..623880dd5 100644 --- a/src/nativewindow/classes/jogamp/nativewindow/macosx/OSXUtil.java +++ b/src/nativewindow/classes/jogamp/nativewindow/macosx/OSXUtil.java @@ -232,15 +232,16 @@ public class OSXUtil implements ToolkitProperties { /** * Detach a sub CALayer from the root CALayer. + * @param subCALayerRelease if true, native call will issue a final {@code [subCALayerRelease release]}. */ - public static void RemoveCASublayer(final long rootCALayer, final long subCALayer) { + public static void RemoveCASublayer(final long rootCALayer, final long subCALayer, final boolean subCALayerRelease) { if(0==rootCALayer || 0==subCALayer) { throw new IllegalArgumentException("rootCALayer 0x"+Long.toHexString(rootCALayer)+", subCALayer 0x"+Long.toHexString(subCALayer)); } if(DEBUG) { System.err.println("OSXUtil.DetachCALayer: 0x"+Long.toHexString(subCALayer)+" - "+Thread.currentThread().getName()); } - RemoveCASublayer0(rootCALayer, subCALayer); + RemoveCASublayer0(rootCALayer, subCALayer, subCALayerRelease); } /** @@ -414,7 +415,7 @@ public class OSXUtil implements ToolkitProperties { private static native void AddCASublayer0(long rootCALayer, long subCALayer, int x, int y, int width, int height, float contentsScale, int caLayerQuirks); private static native void FixCALayerLayout0(long rootCALayer, long subCALayer, boolean visible, int x, int y, int width, int height, int caLayerQuirks); private static native void SetCALayerPixelScale0(long rootCALayer, long subCALayer, float contentsScale); - private static native void RemoveCASublayer0(long rootCALayer, long subCALayer); + private static native void RemoveCASublayer0(long rootCALayer, long subCALayer, boolean subCALayerRelease); private static native void DestroyCALayer0(long caLayer); private static native void RunOnMainThread0(boolean kickNSApp, Runnable runnable); private static native void RunLater0(boolean onMain, boolean kickNSApp, Runnable runnable, int delay); diff --git a/src/nativewindow/native/macosx/OSXmisc.m b/src/nativewindow/native/macosx/OSXmisc.m index 1135c5fb2..a24f9291e 100644 --- a/src/nativewindow/native/macosx/OSXmisc.m +++ b/src/nativewindow/native/macosx/OSXmisc.m @@ -807,10 +807,10 @@ NS_ENDHANDLER /* * Class: Java_jogamp_nativewindow_macosx_OSXUtil * Method: RemoveCASublayer0 - * Signature: (JJ)V + * Signature: (JJZ)V */ JNIEXPORT void JNICALL Java_jogamp_nativewindow_macosx_OSXUtil_RemoveCASublayer0 - (JNIEnv *env, jclass unused, jlong rootCALayer, jlong subCALayer) + (JNIEnv *env, jclass unused, jlong rootCALayer, jlong subCALayer, jboolean subCALayerRelease) { NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; MyCALayer* rootLayer = (MyCALayer*) ((intptr_t) rootCALayer); @@ -826,6 +826,9 @@ JNIEXPORT void JNICALL Java_jogamp_nativewindow_macosx_OSXUtil_RemoveCASublayer0 [subLayer removeFromSuperlayer]; [subLayer release]; // Pairs w/ AddCASublayer + if( subCALayerRelease ) { + [subLayer release]; + } [rootLayer release]; // Pairs w/ AddCASublayer [CATransaction commit]; @@ -1051,7 +1054,7 @@ static void OSXUtil_KickNSApp() { timestamp: 0.0 windowNumber: 0 context: nil - subtype: 0 + subtype: 8888 /* Bug 1389: Avoid JDK impl sendEvent types, utilizing data1 or data2 */ data1: 0 data2: 0]; [NSApp postEvent: event atStart: true]; diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/demos/gl2/awt/TestGearsAWT.java b/src/test/com/jogamp/opengl/test/junit/jogl/demos/gl2/awt/TestGearsAWT.java index c23512005..71864d914 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/demos/gl2/awt/TestGearsAWT.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/demos/gl2/awt/TestGearsAWT.java @@ -160,11 +160,7 @@ public class TestGearsAWT extends UITestCase { } } if(waitForKey) { - final BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); - System.err.println("Press enter to continue"); - try { - System.err.println(stdin.readLine()); - } catch (final IOException e) { } + waitForKey("Start Test"); } org.junit.runner.JUnitCore.main(TestGearsAWT.class.getName()); } |