aboutsummaryrefslogtreecommitdiffstats
path: root/src/test-native/bug1398/Bug1398macOSContextOpsOnMainThread.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test-native/bug1398/Bug1398macOSContextOpsOnMainThread.java')
-rw-r--r--src/test-native/bug1398/Bug1398macOSContextOpsOnMainThread.java126
1 files changed, 126 insertions, 0 deletions
diff --git a/src/test-native/bug1398/Bug1398macOSContextOpsOnMainThread.java b/src/test-native/bug1398/Bug1398macOSContextOpsOnMainThread.java
new file mode 100644
index 000000000..82578acbb
--- /dev/null
+++ b/src/test-native/bug1398/Bug1398macOSContextOpsOnMainThread.java
@@ -0,0 +1,126 @@
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.DisplayMode;
+import java.awt.GraphicsDevice;
+import java.awt.GraphicsConfiguration;
+import java.awt.Rectangle;
+import java.awt.Toolkit;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import com.jogamp.opengl.GL2;
+import com.jogamp.opengl.GLAutoDrawable;
+import com.jogamp.opengl.GLCapabilities;
+import com.jogamp.opengl.GLEventListener;
+import com.jogamp.opengl.GLProfile;
+import com.jogamp.opengl.awt.GLCanvas;
+import com.jogamp.opengl.util.FPSAnimator;
+
+public class Bug1398macOSContextOpsOnMainThread extends JFrame implements GLEventListener {
+
+ protected GLCanvas canvas;
+
+ static {
+ GLProfile.initSingleton();
+ }
+
+ public Bug1398macOSContextOpsOnMainThread() throws Exception {
+ System.out.println("Java version: " + Runtime.class.getPackage().getSpecificationVersion() + " (" + Runtime.class.getPackage().getImplementationVersion() + ")");
+ System.out.println("classloader:" + Thread.currentThread().getContextClassLoader());
+ System.out.println("OS: " + System.getProperty("os.name") + " " + System.getProperty("os.version") + " " + System.getProperty("os.arch"));
+
+ setTitle("Bug1398macOSContextOpsOnMainThread");
+ //setUndecorated(true);
+ //setResizable(false);
+ setDefaultCloseOperation(EXIT_ON_CLOSE);
+ setBackground(Color.WHITE);
+ Dimension dim = new Dimension(800, 600);
+ GraphicsDevice device = getGraphicsConfiguration().getDevice();
+ DisplayMode dm = device.getDisplayMode();
+ System.out.println("w:" + dm.getWidth() + " h:" + dm.getHeight() + " rr:" + dm.getRefreshRate() + " bits:" + dm.getBitDepth() + " dim.w:" + dim.width + " dim.h:" + dim.height);
+ GLCapabilities caps = new GLCapabilities(GLProfile.get(GLProfile.GL2));
+ canvas = new GLCanvas(caps);
+ canvas.setBounds(0, 0, 1, 1);
+
+ JPanel panel = new JPanel();
+ panel.setLayout(null);
+ panel.setPreferredSize(dim);
+ panel.add(canvas);
+
+ Container c = getContentPane();
+ c.setLayout(new BorderLayout());
+ c.add(panel, BorderLayout.CENTER);
+
+ pack();
+
+ // center window
+ GraphicsConfiguration gc = getGraphicsConfiguration();
+ Rectangle bounds = gc.getBounds();
+ System.out.println("gc.bounds: " + bounds);
+ dim = Toolkit.getDefaultToolkit().getScreenSize();
+ System.out.println("dim: " + dim);
+ int w = getSize().width;
+ int h = getSize().height;
+ int x = (dim.width - w) / 2;
+ int y = (dim.height - h) / 2;
+ setLocation(x, y);
+ setVisible(true);
+
+ final FPSAnimator animator = new FPSAnimator(canvas, 5, true);
+ addWindowListener(new WindowAdapter() {
+ public void windowClosing(WindowEvent e) {
+ // Run this on another thread than the AWT event queue to
+ // make sure the call to Animator.stop() completes before
+ // exiting
+ new Thread(new Runnable() {
+ public void run() {
+ animator.stop();
+ }
+ }).start();
+ }
+ });
+ animator.start();
+ }
+
+ /**
+ * OpenGL funcs
+ */
+ private void initExtension(GL2 gl, String glExtensionName) {
+ if (!gl.isExtensionAvailable(glExtensionName)) {
+ final String message = "OpenGL extension \"" + glExtensionName + "\" not available.\n\nPlease update your display driver to the latest version.";
+ throw new RuntimeException(message);
+ }
+ }
+
+ @Override
+ public void init(GLAutoDrawable drawable) {
+ GL2 gl = drawable.getGL().getGL2();
+
+ int[] arg = new int[1];
+ gl.glGetIntegerv(GL2.GL_MAX_TEXTURE_SIZE, arg, 0);
+ System.out.println("GL_MAX_TEXTURE_SIZE:" + arg[0]);
+
+ System.out.println("Available GL Extensions: " + gl.glGetString(GL2.GL_EXTENSIONS));
+
+ initExtension(gl, "GL_ARB_texture_non_power_of_two");
+ }
+
+ @Override
+ public void dispose(GLAutoDrawable drawable) {
+ GL2 gl = drawable.getGL().getGL2();
+ }
+
+ @Override
+ public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {
+ GL2 gl = drawable.getGL().getGL2();
+ }
+
+ @Override
+ public void display(GLAutoDrawable drawable) {
+ GL2 gl = drawable.getGL().getGL2();
+ }
+}
+