package demos.newt; import com.jogamp.nativewindow.*; import com.jogamp.newt.*; import com.jogamp.newt.event.*; import demos.newt.util.TaskManager; public class TaskManagerTest1 implements WindowListener, KeyListener, MouseListener { final static TaskManager eventMgr; final static TaskManager renderMgr; static { System.setProperty("java.awt.headless", "true"); eventMgr = new TaskManager("Event Manager"); eventMgr.start(); renderMgr = new TaskManager("Render Manager"); renderMgr.start(); } public static void main(String[] args) { new TaskManagerTest1().run(); } Window window; Display display; public void windowRepaint(WindowUpdateEvent e) { System.err.println("windowRepaint "+e); } public void windowResized(WindowEvent e) { System.err.println("windowResized "+e); } public void windowMoved(WindowEvent e) { System.err.println("windowMoved "+e); } public void windowGainedFocus(WindowEvent e) { System.err.println("windowGainedFocus "+e); } public void windowLostFocus(WindowEvent e) { System.err.println("windowLostFocus "+e); } public void windowDestroyNotify(WindowEvent e) { System.err.println("windowDestroyNotify "+e); System.err.println("Window Event Listener DestroyNotify send stop request - START"); renderMgr.stop(); eventMgr.stop(); System.err.println("Window Event Listener DestroyNotify send stop request - DONE"); } public void windowDestroyed(WindowEvent e) { System.err.println("windowDestroyed "+e); } public void keyPressed(KeyEvent e) { System.err.println("keyPressed "+e); } public void keyReleased(KeyEvent e) { System.err.println("keyReleased "+e); } public void mouseClicked(MouseEvent e) { System.err.println("mouseClicked "+e); } public void mouseEntered(MouseEvent e) { System.err.println("mouseEntered "+e); } public void mouseExited(MouseEvent e) { System.err.println("mouseExited "+e); } public void mousePressed(MouseEvent e) { System.err.println("mousePressed "+e); } public void mouseReleased(MouseEvent e) { System.err.println("mouseReleased "+e); } public void mouseMoved(MouseEvent e) { System.err.println("mouseMoved "+e); } public void mouseDragged(MouseEvent e) { System.err.println("mouseDragged "+e); } public void mouseWheelMoved(MouseEvent e) { System.err.println("mouseWheelMoved "+e); } void render(long context) { } private class EventThread implements Runnable { public void run() { try { // prolog - lock whatever you need // do it .. if(null!=display) { display.dispatchMessages(); } } catch (Throwable t) { // handle errors .. t.printStackTrace(); } finally { // epilog - unlock locked stuff } } } private class RenderThread implements Runnable { public void run() { if(null==window) { return; } try { // prolog - lock whatever you need window.lockSurface(); // render(window.getSurfaceHandle()); System.out.print("."); Thread.sleep(100); } catch (Throwable t) { // handle errors .. t.printStackTrace(); } finally { // epilog - unlock locked stuff window.unlockSurface(); } } } void run() { try { Capabilities caps = new Capabilities(); caps.setRedBits(8); caps.setGreenBits(8); caps.setBlueBits(8); //caps.setBackgroundOpaque(true); display = NewtFactory.createDisplay(null); Screen screen = NewtFactory.createScreen(display, 0); window = NewtFactory.createWindow(screen, caps); window.setTitle("GlassPrism"); // window.setHandleDestroyNotify(false); window.setUndecorated(false); window.setSize(256, 256); window.addKeyListener(this); window.addMouseListener(this); // let's get notified if window is closed window.addWindowListener(this); window.setVisible(true); eventMgr.addTask(new EventThread()); renderMgr.addTask(new RenderThread()); System.out.println("Main - wait until finished"); renderMgr.waitUntilStopped(); eventMgr.waitUntilStopped(); System.out.println("Main - finished"); window.destroy(); System.out.println("Main - window destroyed"); } catch (Throwable t) { t.printStackTrace(); } } }