JDK-6558510 : Flickering upon resize on X11 platforms
  • Type: Bug
  • Component: client-libs
  • Sub-Component: java.awt
  • Affected Version: 7
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: solaris
  • CPU: generic
  • Submitted: 2007-05-17
  • Updated: 2011-03-07
  • Resolved: 2011-03-07
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
6u4Fixed 7 b15Fixed
Related Reports
Relates :  
Relates :  
6333613 describes flickering when using the JOGL Java / OpenGL binding on Java SE 6. It turns out that when running a window manager that supports live resizing, such as the Java Desktop System on Solaris/x86, the same basic problem is present in the X11 AWT implementation.

Please provide an implementation in sun.awt.X11.XToolkit which overrides disableBackgroundErase(Canvas) and does the same thing that the Windows AWT implementation does in sun.awt.windows.WToolkit.

This has been pointed out recently on the JOGL forum at javagaming.org, so it is affecting end users. Please backport any fix to at least the Java 6 update release train.

EVALUATION To implement the fix in a good manner, I suggest moving the code from WToolkit to SunToolkit and reuse it in XToolkit. I also think we should try to support changing the value of the property "sun.awt.noerasebackground" on-the-fly, i. e. each time the canvas peer is created, the value of the property should be re-read.

EVALUATION A test that can be used to reproduce the problem is attached.

EVALUATION I haven't found any place in our code (shared/AWT, shared/Java2D, X11/classes/XAWT, X11/classes/Java2D, X11/native/Java2D, X11/native/XAWT) where the canvas backround is painted. So it seems this performed by X server or somewhere very deep in our code. However, I have noticed that removing the call to XSetWindowBackground does solve the problem.

EVALUATION Currently, on Windows platform, background cleaning for java.awt.Canvas may be turned off with two ways: call to SunToolkit.disableBackgroundErase() and system property sun.awt.noerasebackground. I feel we need to add support for both, in XToolkit.