[Rev 04] RFR: 8236259: MemoryLeak in ProgressIndicator
Jeanette Winzenburg
fastegal at openjdk.java.net
Thu Mar 12 11:51:46 UTC 2020
On Wed, 11 Mar 2020 12:51:12 GMT, Kevin Rushforth <kcr at openjdk.org> wrote:
>> modules/javafx.controls/src/main/java/javafx/scene/control/skin/ProgressIndicatorSkin.java line 550:
>>
>>> 549: }
>>> 550:
>>> 551: private void setFillOverride(Paint fillOverride) {
>>
>> The issue can be alternatively fixed using below change at line#510
>> text.fontProperty().addListener(new WeakChangeListener<>((observable, oldValue, newValue) -> {
>> doneTextWidth = Utils.computeTextWidth(text.getFont(), DONE, 0);
>> doneTextHeight = Utils.computeTextHeight(text.getFont(), DONE, 0, TextBoundsType.LOGICAL_VERTICAL_CENTER);
>> }));
>>
>> I am not sure which one is better.
>> As there are no objections, I am good with the any.
>
> Nope. This won't work, since the listener will be garbage collected and stop being called. It could be done by keeping
> the listener is an instance variable, but I recommend the original fix.
@arapte the (mine :) general rule to follow is to use the highest abstraction available - here that would be to favour
skin's api to un/register listeners to properties (which ideally is thoroughly tested) over ad-hoc manual code (which
might not work as expected <g>)
sry if I confused anybody with my earlier comment ...
-------------
PR: https://git.openjdk.java.net/jfx/pull/71
More information about the openjfx-dev
mailing list