summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/junit/com/jogamp/test/junit/newt/TestFocus01SwingAWTRobot.java18
-rw-r--r--src/junit/com/jogamp/test/junit/newt/TestFocus02SwingAWTRobot.java5
-rw-r--r--src/newt/classes/com/jogamp/newt/impl/WindowImpl.java27
3 files changed, 23 insertions, 27 deletions
diff --git a/src/junit/com/jogamp/test/junit/newt/TestFocus01SwingAWTRobot.java b/src/junit/com/jogamp/test/junit/newt/TestFocus01SwingAWTRobot.java
index 49591aab8..762e906fc 100644
--- a/src/junit/com/jogamp/test/junit/newt/TestFocus01SwingAWTRobot.java
+++ b/src/junit/com/jogamp/test/junit/newt/TestFocus01SwingAWTRobot.java
@@ -29,18 +29,12 @@
package com.jogamp.test.junit.newt;
import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.After;
import org.junit.AfterClass;
-import org.junit.Test;
import java.awt.AWTException;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Robot;
-import java.awt.event.FocusEvent;
-import java.awt.event.FocusListener;
import java.lang.reflect.InvocationTargetException;
import javax.media.opengl.GLCapabilities;
@@ -49,18 +43,12 @@ import javax.media.opengl.GLProfile;
import javax.swing.JFrame;
import java.util.ArrayList;
-import java.util.List;
-import java.util.Iterator;
import java.io.IOException;
import org.junit.BeforeClass;
import org.junit.Test;
import com.jogamp.newt.awt.NewtCanvasAWT;
-import com.jogamp.newt.event.KeyAdapter;
-import com.jogamp.newt.event.KeyEvent;
-import com.jogamp.newt.event.WindowAdapter;
-import com.jogamp.newt.event.WindowEvent;
import com.jogamp.newt.opengl.GLWindow;
import com.jogamp.opengl.util.Animator;
import com.jogamp.test.junit.jogl.demos.es1.RedSquare;
@@ -69,8 +57,8 @@ import com.jogamp.test.junit.util.*;
public class TestFocus01SwingAWTRobot extends UITestCase {
static int width, height;
-
static long durationPerTest = 800;
+ static long awtWaitTimeout = 1000;
static GLCapabilities glCaps;
@@ -144,8 +132,10 @@ public class TestFocus01SwingAWTRobot extends UITestCase {
frame1.setVisible(true);
Assert.assertTrue(AWTRobotUtil.toFront(robot, frame1));
+ int wait=0;
+ while(wait<awtWaitTimeout/100 && glWindow1.getTotalFrames()<1) { Thread.sleep(awtWaitTimeout/10); wait++; }
+ System.err.println("Frames for initial setVisible(true): "+glWindow1.getTotalFrames());
Assert.assertTrue(glWindow1.isVisible());
- System.out.println("Frames for initial setVisible(true): "+glWindow1.getTotalFrames());
Assert.assertTrue(0 < glWindow1.getTotalFrames());
// Continuous animation ..
diff --git a/src/junit/com/jogamp/test/junit/newt/TestFocus02SwingAWTRobot.java b/src/junit/com/jogamp/test/junit/newt/TestFocus02SwingAWTRobot.java
index af959a2eb..3ce6080a9 100644
--- a/src/junit/com/jogamp/test/junit/newt/TestFocus02SwingAWTRobot.java
+++ b/src/junit/com/jogamp/test/junit/newt/TestFocus02SwingAWTRobot.java
@@ -59,6 +59,7 @@ import com.jogamp.test.junit.jogl.demos.gl2.gears.Gears;
public class TestFocus02SwingAWTRobot extends UITestCase {
static int width, height;
static long durationPerTest = 800;
+ static long awtWaitTimeout = 1000;
static long waitReparent = 0;
static GLCapabilities glCaps;
@@ -162,8 +163,10 @@ public class TestFocus02SwingAWTRobot extends UITestCase {
jFrame1.setVisible(true); // from here on, we need to run modifications on EDT
Assert.assertTrue(AWTRobotUtil.toFront(robot, jFrame1));
+ int wait=0;
+ while(wait<awtWaitTimeout/100 && glWindow1.getTotalFrames()<1) { Thread.sleep(awtWaitTimeout/10); wait++; }
+ System.err.println("Frames for initial setVisible(true): "+glWindow1.getTotalFrames());
Assert.assertTrue(glWindow1.isVisible());
- System.out.println("Frames for initial setVisible(true): "+glWindow1.getTotalFrames());
Assert.assertTrue(0 < glWindow1.getTotalFrames());
// Continuous animation ..
diff --git a/src/newt/classes/com/jogamp/newt/impl/WindowImpl.java b/src/newt/classes/com/jogamp/newt/impl/WindowImpl.java
index 73b13e326..c34081ebf 100644
--- a/src/newt/classes/com/jogamp/newt/impl/WindowImpl.java
+++ b/src/newt/classes/com/jogamp/newt/impl/WindowImpl.java
@@ -800,7 +800,6 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer, ScreenMod
public void run() {
boolean wasVisible;
- boolean displayChanged = false;
// mirror pos/size so native change notification can get overwritten
int x = WindowImpl.this.x;
@@ -851,7 +850,6 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer, ScreenMod
// It may be created properly when the parent is made visible.
destroy(false);
setScreen( (ScreenImpl) newParentWindowNEWT.getScreen() );
- displayChanged = true;
reparentAction = ACTION_NATIVE_CREATION_PENDING;
} else if(newParentWindow != getParent()) {
// Case: Parent's native window realized and changed
@@ -866,7 +864,6 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer, ScreenMod
// auto destroy on-the-fly created Screen/Display
newScreen.setDestroyWhenUnused(true);
setScreen( (ScreenImpl) newScreen );
- displayChanged = true;
}
}
if( 0<width*height ) {
@@ -886,7 +883,6 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer, ScreenMod
setScreen( (ScreenImpl) NewtFactory.createCompatibleScreen(newParentWindow, getScreen()) );
screen.setDestroyWhenUnused(true);
}
- displayChanged = true;
reparentAction = ACTION_NATIVE_CREATION;
} else {
// Mark it for native reparenting
@@ -1003,6 +999,8 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer, ScreenMod
// reset pos/size .. due to some native impl flakyness
reconfigureWindowImpl(x, y, width, height, false, 0, 0);
display.dispatchMessagesNative(); // status up2date
+ WindowImpl.this.waitForVisible(true, false);
+ display.dispatchMessagesNative(); // status up2date
}
}
}
@@ -1036,14 +1034,19 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer, ScreenMod
windowLock.unlock();
}
- if( ACTION_NATIVE_REPARENTING == reparentAction ) {
- sendWindowEvent(WindowEvent.EVENT_WINDOW_RESIZED); // trigger a resize/relayout and repaint to listener
- }
-
- if( ACTION_NATIVE_CREATION == reparentAction && wasVisible ) {
- // This may run on the Display/Screen connection,
- // hence a new EDT task
- runOnEDTIfAvail(true, reparentActionRecreate);
+ if(wasVisible) {
+ switch (reparentAction) {
+ case ACTION_NATIVE_REPARENTING:
+ // trigger a resize/relayout and repaint to listener
+ sendWindowEvent(WindowEvent.EVENT_WINDOW_RESIZED);
+ break;
+
+ case ACTION_NATIVE_CREATION:
+ // This may run on the Display/Screen connection,
+ // hence a new EDT task
+ runOnEDTIfAvail(true, reparentActionRecreate);
+ break;
+ }
}
}
}