> Root Cause:
> (Multiple) properties are getting bound to the global 
> `Platform.accessibilityActive` property. Binding (and I say, accessing) of 
> properties is not thread-safe.
> 
> I also changed the design a bit.  Originally, every symbol in a chart had its 
> `focusTraversableProperty` bound to `Platform.accessibilityActive` in order 
> to enable the accessibility navigation across the chart data points.  This is 
> rather inefficient, as the property has to manage (thousands?) of listeners.
> 
> Instead, a single boolean property is added to each chart, with a listener 
> added to it which iterates over data symbols to toggle the 
> `focusTraversableProperty` directly.
> 
> The exact moment when the new property gets bound is also important, and has 
> to happen in the FX application thread.
> 
> With this change, it is safe to create and populate charts with data in a 
> background thread.
> 
> ---
> 
> ## NOTES
> 
> 1. It looks like the `Platform.accessibilityActive` property never 
> transitions back to false  after it transitioned to true.  Some say it is 
> because there is no mechanism in the platform to get notified which cannot 
> possibly be true.
> 2. The javadoc for `Platform.accessibilityActiveProperty()` method stipulates 
> that "_This method may be called from any thread_" which is patently not true 
> as the current implementation is simply not thread-safe.
> 
> ## Note to the Reviewers
> 
> To avoid merge conflicts, the preferred order of integrations:
> 
> #1697 
> #1713 
> #1717

Andy Goryachev has updated the pull request incrementally with one additional 
commit since the last revision:

  review comments

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

Changes:
  - all: https://git.openjdk.org/jfx/pull/1697/files
  - new: https://git.openjdk.org/jfx/pull/1697/files/fc40e9d6..509c0519

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jfx&pr=1697&range=08
 - incr: https://webrevs.openjdk.org/?repo=jfx&pr=1697&range=07-08

  Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod
  Patch: https://git.openjdk.org/jfx/pull/1697.diff
  Fetch: git fetch https://git.openjdk.org/jfx.git pull/1697/head:pull/1697

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

Reply via email to