Bug 1054

Summary: GLContext: makeCurrent() needs a null-check of [mutable] drawable; Review null checks and synchronization/locking.
Product: [JogAmp] Jogl Reporter: Sven Gothel <sgothel>
Component: coreAssignee: Sven Gothel <sgothel>
Status: RESOLVED FIXED    
Severity: major CC: askinner, sgothel
Priority: ---    
Version: 2   
Hardware: All   
OS: all   
Type: --- SCM Refs:
ad79bd072b600a3f2416cc6f0c61e2925000069d dfb9ed47ac6d8e85f6ae5fe166e7a6e28ca8ff83 11347ad39059836f3e2a4f1fc592dc1e3fab6a09 da16dfd39cc17687808308c386d64f6206027c00
Workaround: ---

Description Sven Gothel 2014-08-29 15:05:02 CEST

    
Comment 1 Sven Gothel 2014-08-30 00:12:13 CEST
'drawable' field of GLContextImpl is mutable via setGLDrawable(..),
which requires high-level locking as documented.

The required high-level locking allows us to _not_ add special
synchronization to this field (and drawableRead).

A simple null-check in makeCurrent() shall be sufficient,
plus ensuring mentioned high-level locking is applied.
Comment 2 Sven Gothel 2014-08-30 00:22:14 CEST
11347ad39059836f3e2a4f1fc592dc1e3fab6a09

GLContextImpl 'drawable' and 'drawableRead' synchronization:
  - commit ad79bd072b600a3f2416cc6f0c61e2925000069d 
    check of null drawable is sufficient

  - Add GLAutoDrawable upstream-lock locking to:
    - AWT GLCanvas setupPrint/releasePrint
    - AWT GLJPanel (was missing)
    
Misc:
  - validate shared-context native-surface locking, 
    throw exception if not successful

  - pixelDataEvaluated does not need to be synchronized, 
    since it's being called while context is current, locking
      - GLDrawableHelper.recreateGLDrawable(..): Remove redundant glFinish() call