Summary: | GLContext: makeCurrent() needs a null-check of [mutable] drawable; Review null checks and synchronization/locking. | ||
---|---|---|---|
Product: | [JogAmp] Jogl | Reporter: | Sven Gothel <sgothel> |
Component: | core | Assignee: | 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
'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. 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 |