JDK-6638747 : D3D: Flickering during resize on some Vista systems
  • Type: Bug
  • Component: client-libs
  • Sub-Component: 2d
  • Affected Version: 6u10
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: windows_vista
  • CPU: x86
  • Submitted: 2007-12-07
  • Updated: 2011-03-30
  • Resolved: 2008-01-08
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.
6u10 b10Fixed
Related Reports
Relates :  
On some systems with Windows Vista with DWM (Aero) enabled
Swing applications produce occasional flickering on resize.

SUGGESTED FIX http://sa.sfbay.sun.com/projects/java2d_data/6u10/6638747.0

EVALUATION This problem had been partially addressed before in this bug: 6600226: D3D: Repainting Issues while resizing a Swing application The work around used in that bug was to check if the size of the component changed and don't do the flip if it was. However it is not enough since the size of the window may change after our check and before we do the flip. So instead I propose to check this right before the Present in the native code. Since Present is executed on the toolkit thread the window's size couldn't be changed between our check and call to Present. So if we detect that the window size changed we just don't do Present. This is OK since there is another paint even coming which will repaint the newly exposed area. In order to limit performance impact we will only enable the work around on Windows Vista. This may also need to be revisited later if we decide to change the way we create backbuffers for swap chains. Currenlty we create them the size of the window instead of the client area.