RFR: 8241840: Memoryleak: Closed focused Stages are not collected with Monocle. [v5]

Kevin Rushforth kcr at openjdk.java.net
Fri Aug 7 21:45:12 UTC 2020

On Tue, 28 Apr 2020 14:32:37 GMT, Florian Kirmaier <fkirmaier at openjdk.org> wrote:

>> modules/javafx.graphics/src/main/java/com/sun/glass/ui/Window.java line 1325:
>>> 1324:             this.isFocused = focused;
>>> 1325:             if (this.isFocused && this.isVisible) {
>>> 1326:                 setFocusedWindow(this);
>> On my Window10 machine, with this change, `Window.focusedWindow` remains `null` even after the first window (I have not
>> verified with multiple windows though) is shown onto the screen and is focused. And It continues to remain `null` until
>> some mouse or key action is performed on the window. I am not sure if this causes any side effects. It looks like the
>> `Window.focusedWindow` is mostly(only) used for Monocle. Can you please confirm the behavior that
>> `Window.focusedWindow` remain `null` and check for any side effects.
> As mentioned - I don't have a good setup to test this code on Windows.
> But I've checked where focusedWindow/getFocusedWindow is used, and I can verify your assumption. I've searched through
> the whole project and the variable is only used in the MonocleCode.
> The fact that focusedWindow get's sometimes set is probably the cause of the irregular happening memoryleak on Window.

In reading the comments, I thought you were going to revert the changes to `Window.java`? Or did I misinterpret what
you said earlier?

I can confirm that `focusedWindow` is no longer correctly set to the focused window when that Window is first shown (I
tried this on Windows). This is true for apps with multiple windows as well as single Stage apps. I can also confirm
that `focusedWindow` isn't used on any platform other than Monocle. Even so, since this change isn't needed it seems
best to revert it.


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

More information about the openjfx-dev mailing list