diff options
author | Sven Gothel <[email protected]> | 2023-09-29 03:22:28 +0200 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2023-09-29 03:22:28 +0200 |
commit | 2e46eb1bf06ef07801062122716aa99a6c871646 (patch) | |
tree | 0ef44b49991e270b5e956240056d6ce6a392871f /src/jogl/classes | |
parent | a0e6d5883de009d4649d011633090d7660fa229a (diff) |
Bug 1430 - Fix Background erase not disabled with AWT GLCanvas and NewtCanvasAWT
Commit c5431f46b7bf64f109315ec78461859dd88f202a
reduced the disableBackgroundErase(..) to SunToolkit's variation which doesn't work on Windows
as it does not act upon the java.awt.Canvas peer post addNotify().
This re-introduces the java.awt.Canvas method via class JAWTUtil.BackgroundEraseControl
and its called only after addNotify() on Windows and ASAP for everyone else.
Method also calles the SunTookit variation just to be sure.
Diffstat (limited to 'src/jogl/classes')
-rw-r--r-- | src/jogl/classes/com/jogamp/opengl/awt/GLCanvas.java | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/jogl/classes/com/jogamp/opengl/awt/GLCanvas.java b/src/jogl/classes/com/jogamp/opengl/awt/GLCanvas.java index 735a2a21c..97a3321d5 100644 --- a/src/jogl/classes/com/jogamp/opengl/awt/GLCanvas.java +++ b/src/jogl/classes/com/jogamp/opengl/awt/GLCanvas.java @@ -86,6 +86,8 @@ import com.jogamp.opengl.GLSharedContextSetter; import com.jogamp.opengl.Threading; import com.jogamp.common.GlueGenVersion; +import com.jogamp.common.os.Platform; +import com.jogamp.common.os.Platform.OSType; import com.jogamp.common.util.VersionUtil; import com.jogamp.common.util.awt.AWTEDTExecutor; import com.jogamp.common.util.locks.LockFactory; @@ -169,6 +171,8 @@ public class GLCanvas extends Canvas implements AWTGLAutoDrawable, WindowClosing private static final boolean DEBUG = Debug.debug("GLCanvas"); + private static JAWTUtil.BackgroundEraseControl backgroundEraseControl = new JAWTUtil.BackgroundEraseControl(); + private final RecursiveLock lock = LockFactory.createRecursiveLock(); private final GLDrawableHelper helper = new GLDrawableHelper(); private volatile GLDrawableImpl drawable; // volatile: avoid locking for read-only access @@ -589,7 +593,9 @@ public class GLCanvas extends Canvas implements AWTGLAutoDrawable, WindowClosing */ // before native peer is valid: X11 - JAWTUtil.disableBackgroundErase(this); + if( OSType.WINDOWS != Platform.getOSType() ) { + backgroundEraseControl.disable(this); + } final GraphicsDevice awtDevice; if(null==awtDeviceReq) { @@ -614,7 +620,9 @@ public class GLCanvas extends Canvas implements AWTGLAutoDrawable, WindowClosing super.addNotify(); // after native peer is valid: Windows - JAWTUtil.disableBackgroundErase(this); + if( OSType.WINDOWS == Platform.getOSType() ) { + backgroundEraseControl.disable(this); + } createJAWTDrawableAndContext(); |