On Fri, 7 Feb 2025 18:42:01 GMT, Andy Goryachev <ango...@openjdk.org> wrote:
>> ## Root Cause >> Animation gets started in a background thread, which causes the animation >> handler to run in the FX application thread, thus creating simultaneous >> access to the control's fields (list of children in this case). >> >> ## Solution >> Skip the animation. >> >> The fix is similar to https://github.com/openjdk/jfx/pull/1698 > > Andy Goryachev has updated the pull request with a new target base due to a > merge or a rebase. The incremental webrev excludes the unrelated changes > brought in by the merge/rebase. The pull request contains two additional > commits since the last revision: > > - Merge branch 'master' into 8349098.thread.safe.tabpane > - skip animation modules/javafx.controls/src/main/java/javafx/scene/control/skin/TabPaneSkin.java line 523: > 521: }; > 522: > 523: if (Platform.isFxApplicationThread() && > (closeTabAnimation.get() == TabAnimation.GROW)) { With this check, non Application thread cannot play the animation but in else block the `cleanup` is executed on the same thread. Can there still be a situation when, this non-Application thread and Application thread be concurrently modifying the tab? ------------- PR Review Comment: https://git.openjdk.org/jfx/pull/1699#discussion_r1954431776