On Sun, 11 Oct 2020 21:26:06 GMT, Sergey Bylokhov <[email protected]> wrote:
> Fix for various memory leaks in Nimbus and Motif L&Fs, see comments inline.
src/java.desktop/share/classes/javax/swing/plaf/synth/SynthDesktopIconUI.java
line 113:
> 111: if (iconPane instanceof JToggleButton) {
> 112: ((JToggleButton)iconPane).removeActionListener(handler);
> 113: frame.removePropertyChangeListener(this);
This code is never executed, the iconPane is null here, it is moved above to
the uninstallComponents()
src/java.desktop/share/classes/javax/swing/plaf/synth/SynthComboBoxUI.java line
757:
> 755:
> 756: public void unregister() {
> 757: comboBox.removePropertyChangeListener("editor", this);
The listener is added as "comboBox.addPropertyChangeListener("editor",this);"
and should be removed by the pair API.
src/java.desktop/share/classes/com/sun/java/swing/plaf/motif/MotifComboBoxUI.java
line 71:
> 69: };
> 70:
> 71: SwingUtilities.invokeLater( initCode );
This code was added in 1998, the intention was to postpone the initialization
of the editor's background till
everything in the combo box will be initialized, but:
- Since then we have a special method configureEditor() which called every
time the editor is changed and sets the
correct background (see below in this file)
- If the L&F will be changed to something else the posted event will "poison"
the background of the editor by the "motif
color".
test/jdk/javax/swing/UI/UnninstallUIMemoryLeaks/UnninstallUIMemoryLeaks.java
line 94:
> 92: for (LookAndFeelInfo laf : getInstalledLookAndFeels()) {
> 93: String name = laf.getName();
> 94: if (name.contains("OS X") || name.contains("Metal")) {
The test was checked on all platforms via mach5
-------------
PR: https://git.openjdk.java.net/jdk/pull/595