public static void main(String[] args) { int type = USE_NEWT; String tstName = "demos.es2.perftst.PerfVBOLoad"; // default for (int i = args.length - 1; i >= 0; i--) { if (args[i].equals("-awt")) { type |= USE_AWT; } if (args[i].equals("-test") && i + 1 < args.length) { tstName = args[i + 1]; } } try { PerfModule pmod = (PerfModule) Class.forName(tstName).newInstance(); new Perftst().run(type, pmod); System.exit(0); } catch (Exception e) { e.printStackTrace(); System.exit(1); } }
/** Your new java application main entry, which pipelines your application */ public static void main(String[] args) { useMainThread = MAIN_THREAD_CRITERIA; if (DEBUG) System.err.println( "MainThread.main(): " + Thread.currentThread().getName() + " useMainThread " + useMainThread); if (args.length == 0) { return; } String mainClassName = args[0]; String[] mainClassArgs = new String[args.length - 1]; if (args.length > 1) { System.arraycopy(args, 1, mainClassArgs, 0, args.length - 1); } NEWTJNILibLoader.loadNEWT(); mainAction = new MainAction(mainClassName, mainClassArgs); if (NativeWindowFactory.TYPE_MACOSX.equals(NativeWindowFactory.getNativeWindowType(false))) { ReflectionUtil.callStaticMethod( "com.jogamp.newt.impl.macosx.MacDisplay", "initSingleton", null, null, MainThread.class.getClassLoader()); } if (useMainThread) { shouldStop = false; tasks = new ArrayList(); mainThread = Thread.currentThread(); // dispatch user's main thread .. mainAction.start(); // do our main thread task scheduling singletonMainThread.run(); } else { // run user's main in this thread mainAction.run(); } }
public void run() { if (useMainThread) { // we have to start first to provide the service .. singletonMainThread.waitUntilRunning(); } // start user app .. try { Class mainClass = ReflectionUtil.getClass(mainClassName, true, getClass().getClassLoader()); if (null == mainClass) { throw new RuntimeException( new ClassNotFoundException("MainThread couldn't find main class " + mainClassName)); } try { mainClassMain = mainClass.getDeclaredMethod("main", new Class[] {String[].class}); mainClassMain.setAccessible(true); } catch (Throwable t) { throw new RuntimeException(t); } if (DEBUG) System.err.println( "MainAction.run(): " + Thread.currentThread().getName() + " invoke " + mainClassName); mainClassMain.invoke(null, new Object[] {mainClassArgs}); } catch (InvocationTargetException ite) { ite.getTargetException().printStackTrace(); } catch (Throwable t) { t.printStackTrace(); } if (DEBUG) System.err.println( "MainAction.run(): " + Thread.currentThread().getName() + " user app fin"); if (useMainThread) { singletonMainThread.stop(); if (DEBUG) System.err.println( "MainAction.run(): " + Thread.currentThread().getName() + " MainThread fin - stop"); System.exit(0); } }
protected void runTestGL(final GLCapabilitiesImmutable caps) throws InterruptedException { final Display nDisplay = NewtFactory.createDisplay(NativeWindowFactory.TYPE_AWT, null, false); // local display final Screen nScreen = NewtFactory.createScreen(nDisplay, 0); // screen 0 final Window nWindow = NewtFactory.createWindow(nScreen, caps); final GLWindow glWindow = GLWindow.create(nWindow); Assert.assertNotNull(glWindow); glWindow.setTitle("Gears NewtAWTWrapper Test"); glWindow.addGLEventListener(new GearsES2(1)); final Animator animator = useAnimator ? new Animator(glWindow) : null; final QuitAdapter quitAdapter = new QuitAdapter(); glWindow.addKeyListener(new TraceKeyAdapter(quitAdapter)); glWindow.addWindowListener(new TraceWindowAdapter(quitAdapter)); if (useAnimator) { animator.start(); } int div = 3; glWindow.setSize(width / div, height / div); glWindow.setVisible(true); if (doResizeTest) { glWindow.display(); final int[] expSurfaceSize = glWindow.getNativeSurface().convertToPixelUnits(new int[] {width / div, height / div}); Assert.assertTrue( "Surface Size not reached: Expected " + expSurfaceSize[0] + "x" + expSurfaceSize[1] + ", Is " + glWindow.getSurfaceWidth() + "x" + glWindow.getSurfaceHeight(), AWTRobotUtil.waitForSize(glWindow, expSurfaceSize[0], expSurfaceSize[1])); Thread.sleep(600); div = 2; glWindow.setSize(width / div, height / div); glWindow.display(); expSurfaceSize[0] = width / div; expSurfaceSize[1] = height / div; glWindow.getNativeSurface().convertToPixelUnits(expSurfaceSize); Assert.assertTrue( "Surface Size not reached: Expected " + expSurfaceSize[0] + "x" + expSurfaceSize[1] + ", Is " + glWindow.getSurfaceWidth() + "x" + glWindow.getSurfaceHeight(), AWTRobotUtil.waitForSize(glWindow, expSurfaceSize[0], expSurfaceSize[1])); Thread.sleep(600); div = 1; glWindow.setSize(width / div, height / div); glWindow.display(); expSurfaceSize[0] = width / div; expSurfaceSize[1] = height / div; glWindow.getNativeSurface().convertToPixelUnits(expSurfaceSize); Assert.assertTrue( "Surface Size not reached: Expected " + expSurfaceSize[0] + "x" + expSurfaceSize[1] + ", Is " + glWindow.getSurfaceWidth() + "x" + glWindow.getSurfaceHeight(), AWTRobotUtil.waitForSize(glWindow, expSurfaceSize[0], expSurfaceSize[1])); Thread.sleep(600); } final long t0 = System.currentTimeMillis(); long t1 = t0; while (!quitAdapter.shouldQuit() && t1 - t0 < duration) { Thread.sleep(100); t1 = System.currentTimeMillis(); } if (useAnimator) { animator.stop(); } glWindow.destroy(); }