aboutsummaryrefslogtreecommitdiffstats
path: root/src/newt
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2019-11-21 03:04:33 +0100
committerSven Gothel <[email protected]>2019-11-21 03:04:33 +0100
commit4a072cd1c09d3f2ba5fd04033091836d195c9409 (patch)
tree079eb5ddac33ca2b9dfa34d981812617842bdebf /src/newt
parente509bac8554b5a5e8a7cec6638aad53c4129eb68 (diff)
Bug 1393: MacOS: Wait for window position setting on main-thread (blocking)
Also issue the orderFront0 call within createWindow1 (aligned with IOS code)
Diffstat (limited to 'src/newt')
-rw-r--r--src/newt/classes/jogamp/newt/driver/macosx/WindowDriver.java21
-rw-r--r--src/newt/native/MacWindow.m15
2 files changed, 10 insertions, 26 deletions
diff --git a/src/newt/classes/jogamp/newt/driver/macosx/WindowDriver.java b/src/newt/classes/jogamp/newt/driver/macosx/WindowDriver.java
index 631dfced9..67cd188eb 100644
--- a/src/newt/classes/jogamp/newt/driver/macosx/WindowDriver.java
+++ b/src/newt/classes/jogamp/newt/driver/macosx/WindowDriver.java
@@ -457,7 +457,7 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
super.sizeChanged(false, width, height, true);
positionChanged(false, x, y);
} else {
- OSXUtil.RunOnMainThread(false, false, new Runnable() {
+ OSXUtil.RunOnMainThread(true, false, new Runnable() {
@Override
public void run() {
updateSizePosInsets0(getWindowHandle(), false);
@@ -471,15 +471,11 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
if( width>0 && height>0 ) {
if( !isOffscreenInstance ) {
OSXUtil.RunOnMainThread(true, false, new Runnable() {
- @Override
- public void run() {
- setWindowClientTopLeftPointAndSize0(oldWindowHandle,
- pClientLevelOnSreen.getX(), pClientLevelOnSreen.getY(),
- width, height, 0 != ( STATE_MASK_VISIBLE & flags));
- } } );
- OSXUtil.RunOnMainThread(false, false, new Runnable() {
@Override
public void run() {
+ setWindowClientTopLeftPointAndSize0(oldWindowHandle,
+ pClientLevelOnSreen.getX(), pClientLevelOnSreen.getY(),
+ width, height, 0 != ( STATE_MASK_VISIBLE & flags));
updateSizePosInsets0(oldWindowHandle, false);
} } );
} else { // else offscreen size is realized via recreation
@@ -811,15 +807,6 @@ public class WindowDriver extends WindowImpl implements MutableSurface, DriverCl
throw new NativeWindowException("Could not create native window "+Thread.currentThread().getName()+" "+this);
}
setWindowHandle( newWin[0] );
- if( !offscreenInstance && 0 != ( STATE_MASK_VISIBLE & flags) ) {
- OSXUtil.RunOnMainThread(false, false, new Runnable() {
- @Override
- public void run() {
- orderFront0( newWin[0] );
- }
-
- });
- }
} catch (final Exception ie) {
ie.printStackTrace();
}
diff --git a/src/newt/native/MacWindow.m b/src/newt/native/MacWindow.m
index ffbdc3622..064fe435a 100644
--- a/src/newt/native/MacWindow.m
+++ b/src/newt/native/MacWindow.m
@@ -923,27 +923,24 @@ NS_ENDHANDLER
DBG_PRINT( "createWindow1.%d - %p view %p, isVisible %d\n",
dbgIdx++, myWindow, myView, [myWindow isVisible]);
-#if 0
- // Visible on front may lead to a deadlock on Java11
- // WindowDriver's createWindow1 caller shall issue this w/o wait
- // after creation
if( visible ) {
- #if 0
+ #if 1
+ [myWindow orderFront: myWindow];
+ // [myWindow performSelector:@selector(orderFront) withObject:myWindow afterDelay:0];
+ #elif 0
[myWindow makeKeyAndOrderFront: myWindow];
if( NULL != parentWindow ) {
[myWindow orderWindow: NSWindowAbove relativeTo: [parentWindow windowNumber]];
}
- #endif
- #if 1
+ #else
[myView setNextResponder: myWindow];
if( NULL == parentWindow ) {
[myWindow orderFrontRegardless];
} else {
[myWindow orderWindow: NSWindowAbove relativeTo: [parentWindow windowNumber]];
}
- #endif
+ #endif
}
-#endif
DBG_PRINT( "createWindow1.%d - %p view %p, isVisible %d\n",
dbgIdx++, myWindow, myView, [myWindow isVisible]);