aboutsummaryrefslogtreecommitdiffstats
path: root/src/classes/com/sun/opengl/impl
diff options
context:
space:
mode:
Diffstat (limited to 'src/classes/com/sun/opengl/impl')
-rw-r--r--src/classes/com/sun/opengl/impl/x11/glx/X11GLXDrawableFactory.java11
-rw-r--r--src/classes/com/sun/opengl/impl/x11/glx/X11OnscreenGLXContext.java6
2 files changed, 12 insertions, 5 deletions
diff --git a/src/classes/com/sun/opengl/impl/x11/glx/X11GLXDrawableFactory.java b/src/classes/com/sun/opengl/impl/x11/glx/X11GLXDrawableFactory.java
index 85e0ecc21..22ba775ec 100644
--- a/src/classes/com/sun/opengl/impl/x11/glx/X11GLXDrawableFactory.java
+++ b/src/classes/com/sun/opengl/impl/x11/glx/X11GLXDrawableFactory.java
@@ -107,11 +107,12 @@ public class X11GLXDrawableFactory extends GLDrawableFactoryImpl {
throw new IllegalArgumentException("Null target");
}
target = NativeWindowFactory.getNativeWindow(target);
- X11OnscreenGLXDrawable drawable = new X11OnscreenGLXDrawable(this, target);
- long visualID = target.getVisualID();
- int screen = target.getScreenIndex();
- drawable.setChosenGLCapabilities((GLCapabilities) visualToGLCapsMap.get(new ScreenAndVisualIDKey(screen, visualID)));
- return drawable;
+ return new X11OnscreenGLXDrawable(this, target);
+ }
+
+ public GLCapabilities lookupCapabilitiesByScreenAndVisualID(int screenIndex,
+ long visualID) {
+ return (GLCapabilities) visualToGLCapsMap.get(new ScreenAndVisualIDKey(screenIndex, visualID));
}
public GLDrawableImpl createOffscreenDrawable(GLCapabilities capabilities,
diff --git a/src/classes/com/sun/opengl/impl/x11/glx/X11OnscreenGLXContext.java b/src/classes/com/sun/opengl/impl/x11/glx/X11OnscreenGLXContext.java
index 7152a6238..f1743a8b4 100644
--- a/src/classes/com/sun/opengl/impl/x11/glx/X11OnscreenGLXContext.java
+++ b/src/classes/com/sun/opengl/impl/x11/glx/X11OnscreenGLXContext.java
@@ -60,6 +60,12 @@ public class X11OnscreenGLXContext extends X11GLXContext {
protected int makeCurrentImpl() throws GLException {
int lockRes = drawable.lockSurface();
+ if (drawable.getChosenGLCapabilities() == null) {
+ X11GLXDrawableFactory factory = (X11GLXDrawableFactory) drawable.getFactory();
+ NativeWindow window = drawable.getNativeWindow();
+ drawable.setChosenGLCapabilities(factory.lookupCapabilitiesByScreenAndVisualID(window.getScreenIndex(),
+ window.getVisualID()));
+ }
boolean exceptionOccurred = false;
try {
if (lockRes == NativeWindow.LOCK_SURFACE_NOT_READY) {