On Fri, 14 Feb 2025 16:12:27 GMT, Kevin Rushforth <k...@openjdk.org> wrote:

>> 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?
>
> If you mean two threads accessing this same TabPaneSkin instance, then that's 
> not a valid case. JavaFX objects are not thread-safe when accessed from 
> multiple threads. This bug (and the other related bugs fixed or under review) 
> is about making sure that multiple threads, including the JavaFX application 
> thread, each concurrently accessing their own instance, don't interfere with 
> each other.
> 
> So it would only be a problem if "cleanup" attempted some animation or 
> touched static state or similar, which is doesn't look like it does.

Although, having said that, the purpose of the cleanup is to clean up after the 
animation. So a better fix might be to put the entire if-else inside an `if 
(Platform.isFxApplicationThread())` test.

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

PR Review Comment: https://git.openjdk.org/jfx/pull/1699#discussion_r1956407884

Reply via email to