<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://jogamp.org/bugzilla/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.2"
          urlbase="https://jogamp.org/bugzilla/"
          
          maintainer="sgothel@jausoft.com"
>

    <bug>
          <bug_id>1430</bug_id>
          
          <creation_ts>2023-03-09 16:27:07 +0100</creation_ts>
          <short_desc>Background erase not disabled with AWT GLCanvas and NewtCanvasAWT</short_desc>
          <delta_ts>2023-09-29 03:23:10 +0200</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>3</classification_id>
          <classification>JogAmp</classification>
          <product>Jogl</product>
          <component>awt</component>
          <version>2.6.0</version>
          <rep_platform>All</rep_platform>
          <op_sys>all</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>crougier</reporter>
          <assigned_to name="Sven Gothel">sgothel</assigned_to>
          
          
          <cf_type>DEFECT</cf_type>
          <cf_scm_refs>2e46eb1bf06ef07801062122716aa99a6c871646</cf_scm_refs>
          <cf_workaround>TRUE</cf_workaround>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>6769</commentid>
    <comment_count>0</comment_count>
      <attachid>856</attachid>
    <who name="">crougier</who>
    <bug_when>2023-03-09 16:27:07 +0100</bug_when>
    <thetext>Created attachment 856
JOGLQuad example

As mentioned in the javadoc of com.jogamp.opengl.awt.GLCanvas class, GLCanvas tries to disable background erase for the AWT Canvas. This works well :
- on Windows with Java 11 and JOGL 2.3.2
but it does not work :
- on Windows with Java 11 and JOGL 2.4.0 (regression)
- on Ubuntu with Java 11 and JOGL 2.3.2 or 2.4.0
- on Windows and Ubuntu with Java 17 and JOGL 2.3.2 or 2.4.0

Tested on Windows 10 and Ubuntu 20.04 with OpenJDK 11.0.12+7 and OpenJDK 17.0.6+10.
It can be reproduced with the attached JOGLQuad example, the background flickers when canvas is resized.
Workaround: setting the &quot;sun.awt.noerasebackground&quot; property to true solves this issue in all cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>6770</commentid>
    <comment_count>1</comment_count>
    <who name="">crougier</who>
    <bug_when>2023-03-09 16:34:53 +0100</bug_when>
    <thetext>Originally discussed here: https://forum.jogamp.org/Resize-flickering-with-AWT-GLCanvas-and-JOGL-2-4-0-td4042181.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>6771</commentid>
    <comment_count>2</comment_count>
    <who name="Sven Gothel">sgothel</who>
    <bug_when>2023-03-09 17:31:32 +0100</bug_when>
    <thetext>Celine posted in
https://forum.jogamp.org/Resize-flickering-with-AWT-GLCanvas-and-JOGL-2-4-0-tp4042181p4042192.html

Not really...
With JOGL 2.3.2, the sun.awt.windows.WToolkit.disableBackgroundErase(Canvas) is called :

    @Override
    public void disableBackgroundErase(Canvas canvas) {
        WCanvasPeer peer = AWTAccessor.getComponentAccessor().getPeer(canvas);
        if (peer == null) {
            throw new IllegalStateException(&quot;Canvas must have a valid peer&quot;);
        }
        peer.disableBackgroundErase();
    }

With JOGL 2.4.0, the sun.awt.SunToolkit.disableBackgroundErase(Component component) is called :

    public void disableBackgroundErase(Component component) {
        disableBackgroundEraseImpl(component);
    }

    private void disableBackgroundEraseImpl(Component component) {
        AWTAccessor.getComponentAccessor().setBackgroundEraseDisabled(component, true);
    }

The regression on Windows platforms may be due to this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>6896</commentid>
    <comment_count>3</comment_count>
    <who name="Sven Gothel">sgothel</who>
    <bug_when>2023-09-29 03:23:10 +0200</bug_when>
    <thetext>Commit 2e46eb1bf06ef07801062122716aa99a6c871646:

Commit c5431f46b7bf64f109315ec78461859dd88f202a 
reduced the disableBackgroundErase(..) to SunToolkit&apos;s variation which doesn&apos;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.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>856</attachid>
            <date>2023-03-09 16:27:07 +0100</date>
            <delta_ts>2023-03-09 16:27:07 +0100</delta_ts>
            <desc>JOGLQuad example</desc>
            <filename>JOGLQuad.java</filename>
            <type>text/plain</type>
            <size>3239</size>
            <attacher>crougier</attacher>
            
              <data encoding="base64">cGFja2FnZSBqb2dsLnRlc3Q7DQoNCmltcG9ydCBqYXZhLmF3dC5GcmFtZTsNCmltcG9ydCBqYXZh
LmF3dC5ldmVudC5XaW5kb3dBZGFwdGVyOw0KaW1wb3J0IGphdmEuYXd0LmV2ZW50LldpbmRvd0V2
ZW50Ow0KDQppbXBvcnQgY29tLmpvZ2FtcC5vcGVuZ2wuR0w7DQppbXBvcnQgY29tLmpvZ2FtcC5v
cGVuZ2wuR0wyOw0KaW1wb3J0IGNvbS5qb2dhbXAub3BlbmdsLkdMMkVTMTsNCmltcG9ydCBjb20u
am9nYW1wLm9wZW5nbC5HTEF1dG9EcmF3YWJsZTsNCmltcG9ydCBjb20uam9nYW1wLm9wZW5nbC5H
TEV2ZW50TGlzdGVuZXI7DQppbXBvcnQgY29tLmpvZ2FtcC5vcGVuZ2wuYXd0LkdMQ2FudmFzOw0K
aW1wb3J0IGNvbS5qb2dhbXAub3BlbmdsLmZpeGVkZnVuYy5HTExpZ2h0aW5nRnVuYzsNCmltcG9y
dCBjb20uam9nYW1wLm9wZW5nbC5maXhlZGZ1bmMuR0xNYXRyaXhGdW5jOw0KaW1wb3J0IGNvbS5q
b2dhbXAub3BlbmdsLnV0aWwuQW5pbWF0b3I7DQoNCi8qKg0KICogU2VsZi1jb250YWluZWQgZXhh
bXBsZSAod2l0aGluIGEgc2luZ2xlIGNsYXNzIG9ubHkgdG8ga2VlcCBpdCBzaW1wbGUpDQogKiBk
aXNwbGF5aW5nIGEgcm90YXRpbmcgcXVhZA0KICovDQpwdWJsaWMgY2xhc3MgSk9HTFF1YWQgaW1w
bGVtZW50cyBHTEV2ZW50TGlzdGVuZXINCnsNCg0KICBwcml2YXRlIGZsb2F0IHJvdGF0ZVQgPSAw
LjBmOw0KDQogIEBPdmVycmlkZQ0KICBwdWJsaWMgdm9pZCBkaXNwbGF5KEdMQXV0b0RyYXdhYmxl
IGdMRHJhd2FibGUpDQogIHsNCiAgICBmaW5hbCBHTDIgZ2wgPSBnTERyYXdhYmxlLmdldEdMKCku
Z2V0R0wyKCk7DQogICAgZ2wuZ2xDbGVhcihHTC5HTF9DT0xPUl9CVUZGRVJfQklUKTsNCiAgICBn
bC5nbENsZWFyKEdMLkdMX0RFUFRIX0JVRkZFUl9CSVQpOw0KICAgIGdsLmdsTG9hZElkZW50aXR5
KCk7DQogICAgZ2wuZ2xUcmFuc2xhdGVmKDAuMGYsIDAuMGYsIC01LjBmKTsNCg0KICAgIC8vIHJv
dGF0ZSBhYm91dCB0aGUgdGhyZWUgYXhlcw0KICAgIGdsLmdsUm90YXRlZihyb3RhdGVULCAxLjBm
LCAwLjBmLCAwLjBmKTsNCiAgICBnbC5nbFJvdGF0ZWYocm90YXRlVCwgMC4wZiwgMS4wZiwgMC4w
Zik7DQogICAgZ2wuZ2xSb3RhdGVmKHJvdGF0ZVQsIDAuMGYsIDAuMGYsIDEuMGYpOw0KDQogICAg
Ly8gRHJhdyBBIFF1YWQNCiAgICBnbC5nbEJlZ2luKEdMMi5HTF9RVUFEUyk7DQogICAgZ2wuZ2xD
b2xvcjNmKDAuMGYsIDEuMGYsIDEuMGYpOyAvLyBzZXQgdGhlIGNvbG9yIG9mIHRoZSBxdWFkDQog
ICAgZ2wuZ2xWZXJ0ZXgzZigtMS4wZiwgMS4wZiwgMC4wZik7IC8vIFRvcCBMZWZ0DQogICAgZ2wu
Z2xWZXJ0ZXgzZigxLjBmLCAxLjBmLCAwLjBmKTsgLy8gVG9wIFJpZ2h0DQogICAgZ2wuZ2xWZXJ0
ZXgzZigxLjBmLCAtMS4wZiwgMC4wZik7IC8vIEJvdHRvbSBSaWdodA0KICAgIGdsLmdsVmVydGV4
M2YoLTEuMGYsIC0xLjBmLCAwLjBmKTsgLy8gQm90dG9tIExlZnQNCiAgICAvLyBEb25lIERyYXdp
bmcgVGhlIFF1YWQNCiAgICBnbC5nbEVuZCgpOw0KDQogICAgLy8gaW5jcmVhc2luZyByb3RhdGlv
biBmb3IgdGhlIG5leHQgaXRlcmF0aW9uDQogICAgcm90YXRlVCArPSAwLjJmOw0KICB9DQoNCiAg
QE92ZXJyaWRlDQogIHB1YmxpYyB2b2lkIGluaXQoR0xBdXRvRHJhd2FibGUgZ2xEcmF3YWJsZSkN
CiAgew0KICAgIEdMMiBnbCA9IGdsRHJhd2FibGUuZ2V0R0woKS5nZXRHTDIoKTsNCiAgICBnbC5n
bFNoYWRlTW9kZWwoR0xMaWdodGluZ0Z1bmMuR0xfU01PT1RIKTsNCiAgICBnbC5nbENsZWFyQ29s
b3IoMC4wZiwgMC4wZiwgMC4wZiwgMC4wZik7DQogICAgZ2wuZ2xDbGVhckRlcHRoKDEuMGYpOw0K
ICAgIGdsLmdsRW5hYmxlKEdMLkdMX0RFUFRIX1RFU1QpOw0KICAgIGdsLmdsRGVwdGhGdW5jKEdM
LkdMX0xFUVVBTCk7DQogICAgZ2wuZ2xIaW50KEdMMkVTMS5HTF9QRVJTUEVDVElWRV9DT1JSRUNU
SU9OX0hJTlQsIEdMLkdMX05JQ0VTVCk7DQogIH0NCg0KICBAT3ZlcnJpZGUNCiAgcHVibGljIHZv
aWQgcmVzaGFwZShHTEF1dG9EcmF3YWJsZSBnTERyYXdhYmxlLCBpbnQgeCwgaW50IHksIGludCB3
aWR0aCwgaW50IGhlaWdodCkNCiAgew0KICAgIEdMMiBnbCA9IGdMRHJhd2FibGUuZ2V0R0woKS5n
ZXRHTDIoKTsNCiAgICBmaW5hbCBmbG9hdCBhc3BlY3QgPSAoZmxvYXQpIHdpZHRoIC8gKGZsb2F0
KSBoZWlnaHQ7DQogICAgZ2wuZ2xNYXRyaXhNb2RlKEdMTWF0cml4RnVuYy5HTF9QUk9KRUNUSU9O
KTsNCiAgICBnbC5nbExvYWRJZGVudGl0eSgpOw0KICAgIGZpbmFsIGZsb2F0IGZoID0gMC41ZjsN
CiAgICBmaW5hbCBmbG9hdCBmdyA9IGZoICogYXNwZWN0Ow0KICAgIGdsLmdsRnJ1c3R1bWYoLWZ3
LCBmdywgLWZoLCBmaCwgMS4wZiwgMTAwMC4wZik7DQogICAgZ2wuZ2xNYXRyaXhNb2RlKEdMTWF0
cml4RnVuYy5HTF9NT0RFTFZJRVcpOw0KICAgIGdsLmdsTG9hZElkZW50aXR5KCk7DQogIH0NCg0K
ICBAT3ZlcnJpZGUNCiAgcHVibGljIHZvaWQgZGlzcG9zZShHTEF1dG9EcmF3YWJsZSBnTERyYXdh
YmxlKQ0KICB7fQ0KDQogIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpDQog
IHsNCiAgICAvLyBTeXN0ZW0uc2V0UHJvcGVydHkoInN1bi5hd3Qubm9lcmFzZWJhY2tncm91bmQi
LCAidHJ1ZSIpOw0KICAgIGZpbmFsIEdMQ2FudmFzIGNhbnZhcyA9IG5ldyBHTENhbnZhcygpOw0K
ICAgIGZpbmFsIEZyYW1lIGZyYW1lID0gbmV3IEZyYW1lKCJKb2dsIFF1YWQgZHJhd2luZyIpOw0K
ICAgIGZpbmFsIEFuaW1hdG9yIGFuaW1hdG9yID0gbmV3IEFuaW1hdG9yKGNhbnZhcyk7DQogICAg
Y2FudmFzLmFkZEdMRXZlbnRMaXN0ZW5lcihuZXcgSk9HTFF1YWQoKSk7DQogICAgZnJhbWUuYWRk
KGNhbnZhcyk7DQogICAgZnJhbWUuc2V0U2l6ZSg2NDAsIDQ4MCk7DQogICAgLy8gZnJhbWUuc2V0
UmVzaXphYmxlKGZhbHNlKTsNCiAgICBmcmFtZS5hZGRXaW5kb3dMaXN0ZW5lcihuZXcgV2luZG93
QWRhcHRlcigpDQogICAgew0KICAgICAgQE92ZXJyaWRlDQogICAgICBwdWJsaWMgdm9pZCB3aW5k
b3dDbG9zaW5nKFdpbmRvd0V2ZW50IGUpDQogICAgICB7DQogICAgICAgIGFuaW1hdG9yLnN0b3Ao
KTsNCiAgICAgICAgZnJhbWUuZGlzcG9zZSgpOw0KICAgICAgICBTeXN0ZW0uZXhpdCgwKTsNCiAg
ICAgIH0NCiAgICB9KTsNCiAgICBmcmFtZS5zZXRWaXNpYmxlKHRydWUpOw0KICAgIGFuaW1hdG9y
LnN0YXJ0KCk7DQogICAgY2FudmFzLnJlcXVlc3RGb2N1cygpOw0KICB9DQp9DQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>