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