From 8fb68690f20eece763561f6f0038a007e934a1dc Mon Sep 17 00:00:00 2001
From: Sven Gothel <sgothel@jausoft.com>
Date: Fri, 2 Oct 2009 15:32:02 -0700
Subject: Proper PBuffer drawable abstraction

---
 .../opengl/impl/x11/glx/X11GLXDrawableFactory.java | 40 ++++++++--------------
 1 file changed, 14 insertions(+), 26 deletions(-)

(limited to 'src/jogl/classes/com/sun/opengl/impl/x11/glx')

diff --git a/src/jogl/classes/com/sun/opengl/impl/x11/glx/X11GLXDrawableFactory.java b/src/jogl/classes/com/sun/opengl/impl/x11/glx/X11GLXDrawableFactory.java
index 762ed5cac..456e04b77 100644
--- a/src/jogl/classes/com/sun/opengl/impl/x11/glx/X11GLXDrawableFactory.java
+++ b/src/jogl/classes/com/sun/opengl/impl/x11/glx/X11GLXDrawableFactory.java
@@ -114,28 +114,25 @@ public class X11GLXDrawableFactory extends GLDrawableFactoryImpl implements Dyna
     return canCreateGLPbuffer;
   }
 
-  public GLPbuffer createGLPbuffer(final GLCapabilities capabilities,
+  public GLDrawableImpl createGLPbufferDrawable(final GLCapabilities capabilities,
                                    final GLCapabilitiesChooser chooser,
                                    final int initialWidth,
-                                   final int initialHeight,
-                                   final GLContext shareWith) {
+                                   final int initialHeight) {
     if (!canCreateGLPbuffer()) {
       throw new GLException("Pbuffer support not available with current graphics card");
     }
-    final List returnList = new ArrayList();
-    final GLDrawableFactory factory = this;
-    Runnable r = new Runnable() {
-        public void run() {
-          AbstractGraphicsScreen screen = X11GraphicsScreen.createDefault();
-          X11PbufferGLXDrawable pbufferDrawable = new X11PbufferGLXDrawable(factory, screen, capabilities, chooser,
-                                                                            initialWidth,
-                                                                            initialHeight);
-          GLPbufferImpl pbuffer = new GLPbufferImpl(pbufferDrawable, shareWith);
-          returnList.add(pbuffer);
-        }
-      };
-    maybeDoSingleThreadedWorkaround(r);
-    return (GLPbuffer) returnList.get(0);
+    AbstractGraphicsScreen screen = X11GraphicsScreen.createDefault();
+    return new X11PbufferGLXDrawable(this, screen, capabilities, chooser,
+                                     initialWidth, initialHeight);
+  }
+
+  public GLPbuffer createGLPbuffer(final GLCapabilities capabilities,
+                                   final GLCapabilitiesChooser chooser,
+                                   final int initialWidth,
+                                   final int initialHeight,
+                                   final GLContext shareWith) {
+    GLDrawableImpl drawable = createGLPbufferDrawable( capabilities, chooser, initialWidth, initialHeight);
+    return new GLPbufferImpl(drawable, shareWith);
   }
 
   public GLContext createExternalGLContext() {
@@ -164,15 +161,6 @@ public class X11GLXDrawableFactory extends GLDrawableFactoryImpl implements Dyna
     return res;
   }
 
-  private void maybeDoSingleThreadedWorkaround(Runnable action) {
-    if (Threading.isSingleThreaded() &&
-        !Threading.isOpenGLThread()) {
-      Threading.invokeOnOpenGLThread(action);
-    } else {
-      action.run();
-    }
-  }
-
   public boolean canCreateContextOnJava2DSurface() {
     return false;
   }
-- 
cgit v1.2.3