> 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

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

Changes:
  - all: https://git.openjdk.org/jfx/pull/1728/files
  - new: https://git.openjdk.org/jfx/pull/1728/files/0f39382c..e9bb3403

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jfx&pr=1728&range=03
 - incr: https://webrevs.openjdk.org/?repo=jfx&pr=1728&range=02-03

  Stats: 6 lines in 2 files changed: 5 ins; 1 del; 0 mod
  Patch: https://git.openjdk.org/jfx/pull/1728.diff
  Fetch: git fetch https://git.openjdk.org/jfx.git pull/1728/head:pull/1728

PR: https://git.openjdk.org/jfx/pull/1728

Reply via email to