From c225285e09f0a29fca418601bf1aa07cafb54339 Mon Sep 17 00:00:00 2001
From: Sven Gothel <sgothel@jausoft.com>
Date: Wed, 13 Mar 2013 06:35:30 +0100
Subject: Bug 665: Allow re-association of GLContext/GLEventListener to a
 GLDrawable (Part 4)

Note:

  - GLEventListenerState preservs the GLAutoDrawable state,
    i.e. GLContext, all GLEventListener and the GLAnimatorControl association.

  - GLEventListenerState may be utilized to move the state from a dying GLAutoDrawable,
    to be moved to a new created GLAutoDrawable at a later time.

  - GLEventListenerState will be made public soon.

+++

Exessive unit tests cover the new feature, tested manually on GNU/Linux/X11 and OSX(Java6/Java7).

+++

- GLAutoDrawable
  - Change 'setContext(..)' to allow the destruction of the unbound old context:
      'setContext(GLContext newCtx)' -> 'setContext(GLContext newCtx, boolean destroyPrevCtx)'

  - Implementations: Properly implement 'setRealized(..)' incl. obeying threading constraints if exists.
    Method is being utilized at least for GLEventListenerState.moveTo(..)
    to unrealize and realize the drawable resources.

+++

Fix propagation of GLContext/GLDrawable association change (Bottom -> Top):

  GLDrawableImpl.associateContext
      GLContextImpl.associateDrawable
          GLContextImpl.makeCurrent
          GLContextImpl.destroy
          GLContext.setGLDrawable
              ...
              GLDrawableHelper.switchContext
                  GLAutoDrawble.setContext

associateDrawable(..)/associateContext(..) unifies and hence:
    - GLContextImpl.contextRealized() (removed)
    - GLDrawableImpl.contextRealized() (removed)
    - GLDrawableImpl.associateContext(..) (merged)
    - MacOSXCGLContext.drawableChangedNotify(..) (removed)

+++

- EGLUpstreamSurfaceHook.evalUpstreamSurface() validates the surface's device for reusage,
  which is valid in case of GLEventListenerState.moveTo(..)

- MacOSXCGLContext.NSOpenGLImpl: pixelFormat replaces NSOpenGLLayerPfmt and has simplified lifecycle [create..destroy],
  while native NSOpenGLLayer code only holds the reference until released.
---
 src/jogl/classes/jogamp/opengl/GLPbufferImpl.java | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

(limited to 'src/jogl/classes/jogamp/opengl/GLPbufferImpl.java')

diff --git a/src/jogl/classes/jogamp/opengl/GLPbufferImpl.java b/src/jogl/classes/jogamp/opengl/GLPbufferImpl.java
index b438131bc..ddc6d5917 100644
--- a/src/jogl/classes/jogamp/opengl/GLPbufferImpl.java
+++ b/src/jogl/classes/jogamp/opengl/GLPbufferImpl.java
@@ -86,9 +86,10 @@ public class GLPbufferImpl extends GLAutoDrawableBase implements GLPbuffer {
   // 
     
   @Override
-  public final void setRealized(boolean realized) {
+  public final void swapBuffers() throws GLException {
+      defaultSwapBuffers();
   }
-
+  
   //
   // GLAutoDrawable completion
   //
@@ -125,11 +126,6 @@ public class GLPbufferImpl extends GLAutoDrawableBase implements GLPbuffer {
     }
   }
 
-  @Override
-  public final void swapBuffers() throws GLException {
-      defaultSwapBuffers();
-  }
-  
   //----------------------------------------------------------------------
   // Internals only below this point
   //
-- 
cgit v1.2.3