On Thu, 3 Dec 2020 16:39:59 GMT, Kevin Rushforth <k...@openjdk.org> wrote:

>> modules/javafx.graphics/src/main/java/com/sun/glass/ui/mac/MacApplication.java
>>  line 142:
>> 
>>> 140:     @Override
>>> 141:     protected void notifyDidBecomeActive() {
>>> 142:         super.notifyDidBecomeActive();
>> 
>> if an exception occurs in this method (which can happen in case the 
>> superclass eventHandler.handleDidBecomeActiveAction() throws an exception), 
>> the countDownLatch is never decreased, and the `wrappedRunnable` will never 
>> return. 
>> I am not sure what the best approach is in this case. The Thread that waits 
>> for the reactivation is a daemon thread, but there might be other non-daemon 
>> threads lingering.
>> One of the options is to set a timeout on the `reactivationLatch`. If the 
>> countdown didn't happen almost instantly, something is going wrong.
>
> Good catch. It will block the starting of the app if this happens since we 
> will never exit the nested event loop. Putting the call to 
> `reactivationLatch.countDown();` in a try / finally seems best (although I 
> had earlier considered a timeout as well).

Rather than a try / catch I simply moved the call to super after the setting of 
the flag in `notifyDidResignActive` and the countdown in 
`notifyDidBecomeActive`. I also added a timeout just to be safe. It waits for 5 
seconds and logs a warning before continuing.

-------------

PR: https://git.openjdk.java.net/jfx/pull/361

Reply via email to