On Wed, 23 Nov 2022 00:13:07 GMT, Kevin Rushforth <k...@openjdk.org> wrote:

>> Fixes memory leaks as determined by SkinMemoryLeakTest (remove line 171) and 
>> a leak tester
>> https://github.com/andy-goryachev-oracle/Test/blob/main/src/goryachev/apps/LeakTest.java
>> 
>> Make sure to configure the current test in LeakTest:
>> protected final Type WE_ARE_TESTING = Type.PAGINATION;
>> 
>> Found another issue: Pagination class does not survive replacing its skin 
>> (all components disappear).
>> 
>> caused by:
>> - adding and not removing listeners
>> - adding and not removing children Nodes
>> - setting control's properties in the constructor
>> - incorrectly setting a clip rectangle
>> 
>> NOTE: the fix will requires both ListenerHelper 
>> [JDK-8294809](https://bugs.openjdk.org/browse/JDK-8294809) and 
>> Skin.install() [JDK-8290844](https://bugs.openjdk.org/browse/JDK-8290844) 
>> changes.
>
> modules/javafx.controls/src/main/java/javafx/scene/control/skin/PaginationSkin.java
>  line 209:
> 
>> 207:         });
>> 208: 
>> 209:         
>> ListenerHelper.get(this).addChangeListener(getSkinnable().heightProperty(), 
>> true, (ev) -> {
> 
> Why does `fireImmediately` need to be true?

this was needed to fix an issue found in PaginationSkin:
Pagination class does not survive replacing its skin (all components disappear).

> modules/javafx.controls/src/main/java/javafx/scene/control/skin/PaginationSkin.java
>  line 1361:
> 
>> 1359:             // FIX own listener helper?
>> 1360:             
>> //getSkinnable().getStyleClass().removeListener(updateSkinIndicatorType);
>> 1361:             
>> //tooltipVisibleProperty().removeListener(updateTooltipVisibility);
> 
> I don't quite understand the comment. What follow-up is needed?

this method can be removed now.

> modules/javafx.controls/src/test/java/test/javafx/scene/control/skin/SkinMemoryLeakTest.java
>  line 171:
> 
>> 169:                 MenuBar.class,
>> 170:                 MenuButton.class,
>> 171:                 //Pagination.class,
> 
> I would just remove this (which was done for other classes once the leaks 
> were fixed).

Keeping this to avoid merge conflicts.  Will remove the whole exclusion block 
when the last skin is fixed.

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

PR: https://git.openjdk.org/jfx/pull/925

Reply via email to