<AWT Dev> Code Review Request for CR 7128738 - dragged dialog freezes system on dispose

Anthony Petrov anthony.petrov at oracle.com
Tue Mar 13 19:16:13 PDT 2012


Hi Oleg,

The fix looks good to me. It would be cool to write a regression test 
for the issue, btw. You could start dragging a frame using Robot, and 
then call dispose() a couple seconds before releasing a mouse button. 
The test would fail by time-out w/o the fix.

--
best regards,
Anthony

On 3/14/2012 1:54 AM, Oleg Pekhovskiy wrote:
> Hi guys,
> 
> please review the fix for:
> http://bugs.sun.com/view_bug.do?bug_id=7128738
> 
> webrev:
> http://cr.openjdk.java.net/~bagiras/7128738.1
> 
> Description:
> 
> Entering 'move window' mode clicking window title bar sends 
> WM_SYSCOMMAND with SC_MOVE inside WM_NCLBUTTONDOWN.
> As a result additional message pump (for mouse capture) is created 
> blocking the handlers' chain WM_NCLBUTTONDOWN -> WM_SYSCOMMAND.
> 
> So when JFrame.dispose() is called during this situation, deleting of 
> native AwtFrame object could NOT be done because 
> AwtComponent::CanBeDeleted() returns FALSE
> (because of WM_NCLBUTTONDOWN & WM_SYSCOMMAND) and WM_AWT_DELETEOBJECT 
> message is reposted over and over again (eating CPU time).
> 
> Thus I added ReleaseDragCapture(0) to AwtComponent::Dispose() to release 
> mouse capture and finish the additional message pump
> so that AwtComponent::CanBeDeleted() returns TRUE and AwtFrame object is 
> deleted.
> 
> Thanks,
> Oleg



More information about the awt-dev mailing list