summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nativewindow/classes/jogamp/nativewindow/macosx/OSXUtil.java11
-rw-r--r--src/newt/classes/jogamp/newt/driver/macosx/WindowDriver.java43
2 files changed, 31 insertions, 23 deletions
diff --git a/src/nativewindow/classes/jogamp/nativewindow/macosx/OSXUtil.java b/src/nativewindow/classes/jogamp/nativewindow/macosx/OSXUtil.java
index f71dff1cb..b1bf248ce 100644
--- a/src/nativewindow/classes/jogamp/nativewindow/macosx/OSXUtil.java
+++ b/src/nativewindow/classes/jogamp/nativewindow/macosx/OSXUtil.java
@@ -31,7 +31,6 @@ import com.jogamp.nativewindow.NativeWindowException;
import com.jogamp.nativewindow.NativeWindowFactory;
import com.jogamp.nativewindow.util.Insets;
import com.jogamp.nativewindow.util.Point;
-
import com.jogamp.common.util.Function;
import com.jogamp.common.util.FunctionTask;
import com.jogamp.common.util.InterruptedRuntimeException;
@@ -124,10 +123,16 @@ public class OSXUtil implements ToolkitProperties {
}
public static long CreateNSWindow(final int x, final int y, final int width, final int height) {
- return CreateNSWindow0(x, y, width, height);
+ final long res[] = { 0 };
+ RunOnMainThread(true, false /* kickNSApp */, new Runnable() {
+ @Override
+ public void run() {
+ res[0] = CreateNSWindow0(x, y, width, height);
+ } } );
+ return res[0];
}
public static void DestroyNSWindow(final long nsWindow) {
- DestroyNSWindow0(nsWindow);
+ DestroyNSWindow0(nsWindow);
}
public static long GetNSView(final long nsWindow) {
return GetNSView0(nsWindow);
diff --git a/src/newt/classes/jogamp/newt/driver/macosx/WindowDriver.java b/src/newt/classes/jogamp/newt/driver/macosx/WindowDriver.java
index 46c86d2c1..e6ae7719c 100644
--- a/src/newt/classes/jogamp/newt/driver/macosx/WindowDriver.java
+++ b/src/newt/classes/jogamp/newt/driver/macosx/WindowDriver.java
@@ -775,32 +775,35 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
}
windowStyle = ws;
}
- final long newWin = createWindow0( pS.getX(), pS.getY(), width, height,
- 0 != ( STATE_MASK_FULLSCREEN & flags),
- windowStyle,
- NSBackingStoreBuffered, surfaceHandle);
- if ( newWin == 0 ) {
- throw new NativeWindowException("Could not create native window "+Thread.currentThread().getName()+" "+this);
- }
- setWindowHandle( newWin );
-
- final boolean isOpaque = getGraphicsConfiguration().getChosenCapabilities().isBackgroundOpaque() && !offscreenInstance;
// Blocking initialization on main-thread!
+ final long[] newWin = { 0 };
OSXUtil.RunOnMainThread(true, false /* kickNSApp */, new Runnable() {
@Override
public void run() {
- initWindow0( parentWinHandle, newWin, pS.getX(), pS.getY(), width, height, reqPixelScale[0] /* HiDPI uniformPixelScale */,
- isOpaque,
- !offscreenInstance && 0 != ( STATE_MASK_ALWAYSONTOP & flags),
- !offscreenInstance && 0 != ( STATE_MASK_ALWAYSONBOTTOM & flags),
- !offscreenInstance && 0 != ( STATE_MASK_VISIBLE & flags),
- surfaceHandle);
- if( offscreenInstance ) {
- orderOut0(0!=parentWinHandle ? parentWinHandle : newWin);
- } else {
- setTitle0(newWin, getTitle());
+ newWin[0] = createWindow0( pS.getX(), pS.getY(), width, height,
+ 0 != ( STATE_MASK_FULLSCREEN & flags),
+ windowStyle,
+ NSBackingStoreBuffered, surfaceHandle);
+ if ( newWin[0] != 0 ) {
+ final boolean isOpaque = getGraphicsConfiguration().getChosenCapabilities().isBackgroundOpaque() && !offscreenInstance;
+ initWindow0( parentWinHandle, newWin[0], pS.getX(), pS.getY(), width, height, reqPixelScale[0] /* HiDPI uniformPixelScale */,
+ isOpaque,
+ !offscreenInstance && 0 != ( STATE_MASK_ALWAYSONTOP & flags),
+ !offscreenInstance && 0 != ( STATE_MASK_ALWAYSONBOTTOM & flags),
+ !offscreenInstance && 0 != ( STATE_MASK_VISIBLE & flags),
+ surfaceHandle);
+ if( offscreenInstance ) {
+ orderOut0(0!=parentWinHandle ? parentWinHandle : newWin[0]);
+ } else {
+ setTitle0(newWin[0], getTitle());
+ }
}
} });
+
+ if ( newWin[0] == 0 ) {
+ throw new NativeWindowException("Could not create native window "+Thread.currentThread().getName()+" "+this);
+ }
+ setWindowHandle( newWin[0] );
} catch (final Exception ie) {
ie.printStackTrace();
}