|
Re: Trouble using swt GLCanvas on linux [message #1022372 is a reply to message #1022304] |
Thu, 21 March 2013 19:10 |
Steven Reynolds Messages: 2 Registered: March 2013 |
Junior Member |
|
|
Oh, I have a solution. It looks like the swt GLCanvas is doing GTK double buffering. The associated gtk buffer swap hammered my drawing. With the following change, the code seems fine now
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- DemoSWT2.java 20 Mar 2013 22:13:41 -0000 1.7
+++ DemoSWT2.java 21 Mar 2013 18:49:58 -0000 1.8
@@ -9,6 +9,7 @@
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.internal.gtk.OS;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.opengl.GLCanvas;
import org.eclipse.swt.opengl.GLData;
@@ -83,7 +84,11 @@
GLData data = new GLData ();
data.doubleBuffer = true;
final GLCanvas canvas = new GLCanvas(comp, SWT.NONE, data);
-
+ if (SWT.getPlatform().equals("gtk")) {
+ System.out.printf("Disabling GTK double buffering\n");
+ // TODO invoke reflectively?
+ OS.gtk_widget_set_double_buffered(canvas.handle,false);
+ }
canvas.setCurrent();
final GLContext context = GLDrawableFactory.getFactory().createExternalGLContext();
|
|
|
Powered by
FUDForum. Page generated in 0.02743 seconds