> The method `ControlAcceleratorSupport.doAcceleratorInstall(final List<? 
> extends MenuItem> items, final Scene scene)` adds a `ChangeListener` on 
> `MenuItem.acceleratorProperty()`. This listener is not removed when the 
> MenuItem is removed from scenegraph.
> Adding and removing a MenuItem results in multiple copies of the listener 
> added to MenuItem.acceleratorProperty().
> 
> Fix is to remove the listener when MenuItem is removed.
> Fix can be verified by checking the number of instances of 
> `ControlAcceleratorSupport.lambda` using _jvisualvm_. 
> Without this fix, the number of `ControlAcceleratorSupport.lambda` increase 
> in multiple of number of MenuItems being removed and added back.
> With fix, the count is always same as number of MenuItems in scenegraph.
> 
> Also there is another ListChangeListener added to a `ObservableList<MenuItem> 
> items` in the method `ControlAcceleratorSupport.doAcceleratorInstall(final 
> ObservableList<MenuItem> items, final Scene scene)`. There was a TODO note to 
> remove this listener.
> This listener is added on `MenuBarButton.getItems()` and not on 
> `Menu.getItems()`.  This `MenuBarButton` is created by `MenuBarSkin` to show 
> a `Menu`. This `MenuBarButton` gets disposed when the related `Menu` is 
> removed from scenegraph, and so the added `ListChangeListener` gets GCed. 
> Hence it is not required to explicitly remove the listener. 
> Added a comment explaining this behavior in place of the TODO.

Ambarish Rapte has updated the pull request incrementally with one additional 
commit since the last revision:

  add runFinalization()

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

Changes:
  - all: https://git.openjdk.java.net/jfx/pull/429/files
  - new: https://git.openjdk.java.net/jfx/pull/429/files/62344c7e..88b5e25d

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jfx&pr=429&range=03
 - incr: https://webrevs.openjdk.java.net/?repo=jfx&pr=429&range=02-03

  Stats: 1 line in 1 file changed: 1 ins; 0 del; 0 mod
  Patch: https://git.openjdk.java.net/jfx/pull/429.diff
  Fetch: git fetch https://git.openjdk.java.net/jfx pull/429/head:pull/429

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

Reply via email to