On 05.10.2016 03:04, Sergey Bylokhov wrote:
On 24.08.16 22:18, Semyon Sadetsky wrote:
The issue is connected to the restoring focus to the previously focused
window when there are a lot of focus restore requests are coming very
often (for example series of windows showing and hiding quickly). In
this case waiting for asynchronous focus causes nested waiting loop, and
if number of such requests is big enough the StackOverflowError is thrown.

To avoid this the 8139218 solution is revisited to manage the focus
restore synchronously only if it is possible and send a single
asynchronous focus request otherwise.

Can you please clarify what is the difference between:
tempLost.requestFocusInWindow() which was updated in the fix, and toFocus.requestFocusInWindow() which was not updated. As far as I understand the second case(when the toFocus==restoreFocusTo) is a component to which we should send ROLLBACK.
If you look on the comment above the toFocus.requestFocusInWindow() line you get the case when it is called. Actually tempLost.requestFocusInWindow() is the right place to set ROLLBACK. Focus is requested with ROLLBACK cause only when tempLost==toFocus, but it is hard prove, so I'll better to add the condition:

http://cr.openjdk.java.net/~ssadetsky/8159432/webrev.01/

Reply via email to