JDK-4692074 : Regression - painting problem introduced in 1.3.1_03 patch release
  • Type: Bug
  • Component: client-libs
  • Sub-Component: java.awt
  • Affected Version: 1.3.1_04
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • OS: windows_2000
  • CPU: x86
  • Submitted: 2002-05-27
  • Updated: 2003-04-12
  • Resolved: 2002-07-18
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.
Other Other Other Other
1.3.1_05 05Fixed 1.4.0_03Fixed 1.4.1_02Fixed 1.4.2Fixed
Related Reports
Relates :  
Relates :  
Relates :  
Description
Customer got a binary fix (re) to a problem relating to disrupted 
NT Service which is caused by shutdown hooks introduced in 1.3.1
when a user logs off. (Window2000 with binary fix)

However that this JVM, seems to be very slow, especially while
painting. This causes their application to behave very poorly 
while doing such operations.


Comments
CONVERTED DATA BugTraq+ Release Management Values COMMIT TO FIX: 1.3.1_05 1.4.0_03 1.4.1_02 mantis mantis-b02 FIXED IN: 1.3.1_05 1.4.0_03 1.4.1_02 mantis mantis-b02 INTEGRATED IN: 1.3.1_05 1.4.0_03 1.4.1_02 mantis mantis-b02
14-06-2004

EVALUATION This seems to be a regression introduced while fixing 4475369. ###@###.### 2002-05-27 From exchanging emails with ###@###.###, it appears that the fixes for 4475369 were slightly different in the 1.4 source tree and the 1.3.1 update release source tree. 4475369 introduced a regression in 1.4: 4514999. Perhaps the fix for 4475369 in 1.3.1 took this into account, and a "better" fix was applied that did not introduce 4514999. ###@###.### 2002-10-16
16-10-2002

SUGGESTED FIX The fix would be to add the check for "sun.awt.noerasebackground" property. If it is not set we handle WM_ERASEBACKGND the old way, if it does we skip the FillRect routine. --- awt_Canvas.cpp Tue Jun 4 09:27:31 2002 *** 128,142 **** /* * This routine is duplicated in AwtWindow. */ MsgRouting AwtCanvas::WmEraseBkgnd(HDC hDC, BOOL& didErase) { ! m_eraseBackground = TRUE; ! /*didErase = TRUE; RECT rc; ::GetClipBox(hDC, &rc); ! ::FillRect(hDC, &rc, this->GetBackgroundBrush());*/ return mrConsume; } /* * This routine is duplicated in AwtWindow. --- 128,149 ---- /* * This routine is duplicated in AwtWindow. */ MsgRouting AwtCanvas::WmEraseBkgnd(HDC hDC, BOOL& didErase) { ! JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); ! jclass peerCls = env->FindClass("sun/awt/windows/WCanvasPeer"); ! DASSERT(peerCls != NULL); ! jfieldID fieldID = env->GetStaticFieldID(peerCls, "eraseBackgroundDisabled", "Z"); ! if(!env->GetStaticBooleanField(peerCls, fieldID)) ! { ! didErase = TRUE; RECT rc; ::GetClipBox(hDC, &rc); ! ::FillRect(hDC, &rc, this->GetBackgroundBrush()); ! } ! m_eraseBackground = TRUE; return mrConsume; } ###@###.### 2002-06-05
05-06-2002