JDK-6691182 : Flickering of gray box painter during applet resizes
  • Type: Bug
  • Component: deploy
  • Sub-Component: plugin
  • Affected Version: 6u10
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2008-04-19
  • Updated: 2010-09-08
  • Resolved: 2008-06-19
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.
JDK 6
6u10 b23Fixed
Related Reports
Relates :  
Relates :  
Relates :  
Description
The gray box painter, responsible for displaying an image, animated GIF, or Java logo before the applet has loaded, is exhibiting flickering during live applet resizes (for example, for applets that are a percentage of the page's width or height). The root cause is the AWT's native painting of the background of this and sub-components; see 6691181.
This is likely related to flickering seen during live resizes of certain applets, although we are deferring the investigation of that flickering in order to incorporate this bug fix first, which contains the necessary utility methods to eliminate said flicker at the applet level.

Comments
SUGGESTED FIX webrev: http://sa.sfbay.sun.com/projects/deployment_data/6u10/6691182.0 testcase: http://j2se.east.sun.com/deployment/www/tests/1.6.0_10/6691182/
20-04-2008

EVALUATION The root cause of the flickering of the gray box painter during applet resizes is the native background erasing performed by the AWT. Under related bug 6691181, a new variant of the Sun-private SunToolkit.disableBackgroundErase() has been added which applies to all Components for which the flag is valid (currently any component with a WCanvasPeer or XCanvasPeer). This API is now being called for those components where it seems to be needed to avoid flickering: the PluginEmbeddedFrame, the GrayBoxPanel and the AnimationPanel. Note that ###@###.### has reported flickering upon resize on X11 platforms with certain applets which is also caused by the native background erasing. Further investigation will be done to isolate and fix this issue. It is likely that we will rely on the same SunToolkit.disableBackgroundErase() primitive to do so. Also modified JVMInstance to pass through SetAppletSizeMessages before the applet has started, in order to be able to resize the gray box painter appropriately, and pushed a null check in the GrayBoxPanel further down.
20-04-2008