blob: 2ba900f962d2a800721b8bc7febe33fe7e3351ff (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
package demos.newt;
import javax.media.nativewindow.*;
import com.sun.javafx.newt.*;
import demos.newt.util.TaskToolWM;
public class TaskManagerTest2 implements WindowListener, KeyListener
{
public static void main(String[] args)
{
new TaskManagerTest2().run();
}
public void windowResized(WindowEvent e) {}
public void windowMoved(WindowEvent e) {}
public void windowDestroyNotify(WindowEvent e) {
System.err.println("Window Event Listener DestroyNotify send stop request - START");
TaskToolWM.unregisterWindowEvent(e.getSource());
System.err.println("Window Event Listener DestroyNotify send stop request - DONE");
}
public void keyPressed(KeyEvent e)
{
if(e.getKeyChar()=='q') {
System.err.println("Key Event Listener 'q' - ..");
TaskToolWM.unregisterWindowEvent(e.getSource());
} else {
System.err.println("keyPressed "+e);
}
}
public void keyReleased(KeyEvent e)
{
System.err.println("keyReleased "+e);
}
public void keyTyped(KeyEvent e)
{
System.err.println("keyTyped "+e);
}
private class RenderThread implements Runnable {
Window window;
public RenderThread(Window w) {
window = w;
}
public void run() {
if(null==window) {
return;
}
try {
// prolog - lock whatever you need
window.lockSurface();
// render(window.getSurfaceHandle());
System.out.println("Render: "+window);
Thread.sleep(200);
} 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 display = NewtFactory.createDisplay(null);
Screen screen = NewtFactory.createScreen(display, 0);
Window window = NewtFactory.createWindow(screen, caps);
window.setTitle("GlassPrism");
window.setAutoDrawableClient(true);
window.setUndecorated(false);
window.setSize(256, 256);
window.addKeyListener(this);
// let's get notified if window is closed
window.addWindowListener(this);
window.setVisible(true);
TaskToolWM.registerWindowEvent(window);
TaskToolWM.addRenderTask(window, new RenderThread(window));
System.out.println("Main - wait until finished");
TaskToolWM.waitUntilWindowUnregistered(window);
System.out.println("Main - finished");
window.destroy();
System.out.println("Main - window destroyed");
TaskToolWM.exit(true);
}
catch (Throwable t)
{
t.printStackTrace();
}
}
}
|