On Mon, 10 Mar 2025 20:30:43 GMT, Andy Goryachev <ango...@openjdk.org> wrote:

>> Summary
>> -------
>> 
>> Adds a thread check to a number of `Platform` methods:
>> 
>> accessibilityActiveProperty()
>> getPreferences()
>> isAccessibilityActive()
>> 
>> These methods will throw an `IllegalStateException` if called on a thread 
>> other than the JavaFX Application Thread.
>> 
>> Problem
>> -------
>> 
>> JavaFX allows the Nodes and Scenes to be created and modified on any thread 
>> as long as they are not yet attached to a `Window` that is showing.
>> 
>> This is allowed in an implicit assumption that the construction code only 
>> modifies the properties of the said Nodes and Scenes, but not other static 
>> or global entities.  Concurrent multi-threaded access of such entities not 
>> only breaks the initialization of the properties, but also causes the 
>> failures down the road, if the change to the global properties happens while 
>> the Nodes and Scenes are still being constructed.
>> 
>> Even JavaFX platform developers did not avoid tripping over this issue, as 
>> can be illustrated by https://bugs.openjdk.org/browse/JDK-8348987 . 
>> 
>> Solution
>> --------
>> 
>> Fail each method fast with an  `IllegalStateException` if called from a 
>> background thread.
>> 
>> While this solution won't prevent other possible abuse, such as getting a 
>> reference to the property in the JavaFX Application Thread and later 
>> accessing it in a background thread, adding a check and allowing these 
>> methods to fail fast should prevent most likely scenarios.
>
> Andy Goryachev has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   get preferences

Marked as reviewed by mstrauss (Reviewer).

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

PR Review: https://git.openjdk.org/jfx/pull/1728#pullrequestreview-2680408534

Reply via email to