From e5ab975727134d8249277f4df707b2b14a7788f3 Mon Sep 17 00:00:00 2001 From: Sven Gothel Date: Sun, 25 Sep 2011 04:38:59 +0200 Subject: NEWT/JOGL: MacOSX Update Feature related: - Added always-on-top - Added translucency - Child Window Position - AWT parent: manual traverse up the tree and calc position on screen (Problem: the parent view rect is not at the proper position, but covers the whole frame) EDTUtil related: - Works now w/ AWT ot headless (again) - OSX native JNI callbacks gathering JNIEnv properly and attaches/detaches thread. - AWT case: using AWT-Event which properly dispatches our cocoa events - MainThread (headless) case: Fork off thread w/ main class and kick off NSApp run(). This leads to same behavior as w/ AWT case. - Using DefaultEDTUtil - Cleanup MainThread (implements EDTUtil) - Currently not used as EDTUtil (osx), just as launcher - Removed EDTUtil impl code, reuse DefaultEDTUtil - Cleanup AWTEDTUtil (implements EDTUtil) - Currently not used as EDTUtil (osx) --- src/jogl/classes/jogamp/opengl/egl/EGLGraphicsConfiguration.java | 1 + src/jogl/classes/jogamp/opengl/macosx/cgl/MacOSXCGLContext.java | 2 ++ .../opengl/windows/wgl/WindowsWGLGraphicsConfigurationFactory.java | 1 - src/jogl/native/macosx/MacOSXWindowSystemInterface.m | 5 +++++ 4 files changed, 8 insertions(+), 1 deletion(-) (limited to 'src/jogl') diff --git a/src/jogl/classes/jogamp/opengl/egl/EGLGraphicsConfiguration.java b/src/jogl/classes/jogamp/opengl/egl/EGLGraphicsConfiguration.java index ed5b88455..14e67a2c1 100644 --- a/src/jogl/classes/jogamp/opengl/egl/EGLGraphicsConfiguration.java +++ b/src/jogl/classes/jogamp/opengl/egl/EGLGraphicsConfiguration.java @@ -75,6 +75,7 @@ public class EGLGraphicsConfiguration extends DefaultGraphicsConfiguration imple GLProfile glp = capsRequested.getGLProfile(); long cfg = EGLConfigId2EGLConfig(glp, dpy, cfgID); EGLGLCapabilities caps = EGLConfig2Capabilities(glp, dpy, cfg, false, capsRequested.isOnscreen(), capsRequested.isPBuffer()); + caps = (EGLGLCapabilities) GLGraphicsConfigurationUtil.fixOpaqueGLCapabilities(caps, capsRequested.isBackgroundOpaque()); // FIXME: valid to override EGL transparency ? return new EGLGraphicsConfiguration(absScreen, caps, capsRequested, new DefaultGLCapabilitiesChooser()); } diff --git a/src/jogl/classes/jogamp/opengl/macosx/cgl/MacOSXCGLContext.java b/src/jogl/classes/jogamp/opengl/macosx/cgl/MacOSXCGLContext.java index 150a5e105..6d6b79b42 100644 --- a/src/jogl/classes/jogamp/opengl/macosx/cgl/MacOSXCGLContext.java +++ b/src/jogl/classes/jogamp/opengl/macosx/cgl/MacOSXCGLContext.java @@ -143,6 +143,7 @@ public abstract class MacOSXCGLContext extends GLContextImpl contextHandle = CGL.createContext(share, drawable.getHandle(), pixelFormat, + capabilities.isBackgroundOpaque(), viewNotReady, 0); if (contextHandle == 0) { if (viewNotReady[0] == 1) { @@ -161,6 +162,7 @@ public abstract class MacOSXCGLContext extends GLContextImpl } GLCapabilitiesImmutable caps = MacOSXCGLGraphicsConfiguration.NSPixelFormat2GLCapabilities(glProfile, pixelFormat); + caps = GLGraphicsConfigurationUtil.fixOpaqueGLCapabilities(caps, capabilities.isBackgroundOpaque()); config.setChosenCapabilities(caps); } finally { CGL.deletePixelFormat(pixelFormat); diff --git a/src/jogl/classes/jogamp/opengl/windows/wgl/WindowsWGLGraphicsConfigurationFactory.java b/src/jogl/classes/jogamp/opengl/windows/wgl/WindowsWGLGraphicsConfigurationFactory.java index 178f2777c..a485f8ce8 100644 --- a/src/jogl/classes/jogamp/opengl/windows/wgl/WindowsWGLGraphicsConfigurationFactory.java +++ b/src/jogl/classes/jogamp/opengl/windows/wgl/WindowsWGLGraphicsConfigurationFactory.java @@ -42,7 +42,6 @@ import javax.media.nativewindow.GraphicsConfigurationFactory; import javax.media.nativewindow.CapabilitiesImmutable; import javax.media.nativewindow.NativeSurface; import javax.media.nativewindow.NativeWindowFactory; -import javax.media.opengl.GLCapabilities; import javax.media.opengl.GLCapabilitiesImmutable; import javax.media.opengl.GLCapabilitiesChooser; import javax.media.opengl.GLContext; diff --git a/src/jogl/native/macosx/MacOSXWindowSystemInterface.m b/src/jogl/native/macosx/MacOSXWindowSystemInterface.m index 9a7356b7c..5973ca45b 100644 --- a/src/jogl/native/macosx/MacOSXWindowSystemInterface.m +++ b/src/jogl/native/macosx/MacOSXWindowSystemInterface.m @@ -470,6 +470,7 @@ void deletePixelFormat(void* pixelFormat) { void* createContext(void* shareContext, void* view, void* pixelFormat, + Bool opaque, int* viewNotReady) { getRendererInfo(); @@ -520,6 +521,10 @@ void* createContext(void* shareContext, if (nsContext != nil) { if (nsView != nil) { + if(!opaque) { + long zeroOpacity = 0; + [nsContext setValues:&zeroOpacity forParameter:NSOpenGLCPSurfaceOpacity]; + } [nsContext setView:nsView]; [nsView unlockFocus]; } -- cgit v1.2.3