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

Reply via email to