From bcfaa149b9803ce33c5a356cbcb45f7dfd3e4361 Mon Sep 17 00:00:00 2001
From: Sven Gothel
- * Warning: Don't reference this interface directly, since it may end up in {@link GLAutoDrawable}
+ * Sharing of server-side OpenGL objects such as buffer objects, e.g. VBOs,
+ * and textures among OpenGL contexts is supported with this interface.
+ *
+ * A master {@link GLContext} is the {@link GLContext} which is created first,
+ * shared {@link GLContext} w/ this master are referred as slave {@link GLContext}.
+ *
+ * Be aware that the master {@link GLContext} and related resources, i.e. the {@link GLAutoDrawable},
+ * shall not be destroyed before it's slave {@link GLContext} instances.
+ * Users may use a {@link GLDrawableFactory#createDummyDrawable(javax.media.nativewindow.AbstractGraphicsDevice, boolean, GLProfile) dummy}
+ * {@link GLDrawable} and it's {@link GLContext} as the master of all shared slave {@link GLContext}.
+ * Same constraints as above apply, i.e. it shall be destroyed after all shared slaves.
* Driver stability constraints
+ *
+ * Otherwise the OpenGL driver implementation may crash w/ SIGSEGV if shared resources are still used!
+ * Note that this is not specified within OpenGL and should work, however, some drivers
+ * do not seem to handle this situation well, i.e. they do not postpone resource destruction
+ * until the last reference is removed.
+ * Since pending destruction of {@link GLContext} and it's {@link GLDrawable} is complex and nearly impossible
+ * for us at the top level, considering the different windowing systems and {@link GLAutoDrawable} types,
+ * the user shall take care of proper destruction order.
+ *
+ * See driver stability constraints. + *
* * @param sharedContext The OpenGL context to be shared by this {@link GLAutoDrawable}'s {@link GLContext}. * @throws IllegalStateException if a {@link #setSharedContext(GLContext) shared GLContext} @@ -67,6 +92,9 @@ public interface GLSharedContextSetter extends GLAutoDrawable { * as long it's {@link GLContext} isnull
* or has not been {@link GLContext#isCreated() created natively}.
*
+ * + * See driver stability constraints. + *
* * @param sharedContext The GLAutoDrawable, which OpenGL context shall be shared by this {@link GLAutoDrawable}'s {@link GLContext}. * @throws IllegalStateException if a {@link #setSharedContext(GLContext) shared GLContext} -- cgit v1.2.3