| 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
|