diff options
author | Sven Gothel <[email protected]> | 2011-09-16 04:18:00 +0200 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2011-09-16 04:18:00 +0200 |
commit | 0e9935a8f9e2969e4ddd96dbc043473d9f336c3a (patch) | |
tree | 2e8445423ce8d6b6bdf486e396bfa2d7349fc066 /src/newt | |
parent | 417b83ebd6c4147a290deeb88047bf64e2a27917 (diff) |
NEWT/Reparenting: Give Composite WM some slack, sleep(100); Minor edits/fixes
Diffstat (limited to 'src/newt')
-rw-r--r-- | src/newt/classes/jogamp/newt/WindowImpl.java | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/newt/classes/jogamp/newt/WindowImpl.java b/src/newt/classes/jogamp/newt/WindowImpl.java index bed81cd02..16bd221df 100644 --- a/src/newt/classes/jogamp/newt/WindowImpl.java +++ b/src/newt/classes/jogamp/newt/WindowImpl.java @@ -1092,9 +1092,14 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer if( ACTION_NATIVE_REPARENTING == reparentAction ) { DisplayImpl display = (DisplayImpl) screen.getDisplay(); display.dispatchMessagesNative(); // status up2date + if(wasVisible) { setVisibleImpl(false, x, y, width, height); WindowImpl.this.waitForVisible(false, true); + // some composite WM behave slacky .. give 'em chance to change state -> invisible, + // even though we do exactly that (KDE+Composite) + try { Thread.sleep(100); } catch (InterruptedException e) { } + display.dispatchMessagesNative(); // status up2date } // Lock parentWindow only during reparenting (attempt) @@ -1102,8 +1107,10 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer if( null != parentWindow ) { parentWindowLocked = parentWindow; if( NativeSurface.LOCK_SURFACE_NOT_READY >= parentWindowLocked.lockSurface() ) { - throw new NativeWindowException("Parent surface lock: not ready: "+parentWindow); + throw new NativeWindowException("Parent surface lock: not ready: "+parentWindowLocked); } + // update native handle, locked state + parentWindowHandle = parentWindowLocked.getWindowHandle(); } else { parentWindowLocked = null; } @@ -1476,6 +1483,8 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer public void setFocusAction(FocusRunnable focusAction) { this.focusAction = focusAction; } + + /** Called by native requestFocusImpl() */ protected boolean focusAction() { if(DEBUG_IMPLEMENTATION) { System.err.println("Window.focusAction() START - "+getThreadName()+", focusAction: "+focusAction+" - windowHandle "+toHexString(getWindowHandle())); @@ -1546,7 +1555,7 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer // set current state WindowImpl.this.fullscreen = fullscreen; - + if( nativeFullscreenChange ) { int x,y,w,h; @@ -2159,7 +2168,6 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer for(long sleep = timeOut; 0<sleep && this.visible != visible; sleep-=10 ) { display.dispatchMessagesNative(); // status up2date try { Thread.sleep(10); } catch (InterruptedException ie) {} - sleep -=10; } if(this.visible != visible) { final String msg = "Visibility not reached as requested within "+timeOut+"ms : requested "+visible+", is "+this.visible; @@ -2202,7 +2210,6 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer } else { display.dispatchMessagesNative(); // status up2date try { Thread.sleep(10); } catch (InterruptedException ie) {} - sleep -=10; } } if(!reached) { @@ -2225,7 +2232,6 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer } else { display.dispatchMessagesNative(); // status up2date try { Thread.sleep(10); } catch (InterruptedException ie) {} - sleep -=10; } } if(!reached) { |