On Thu, 6 Feb 2025 20:14:43 GMT, Kevin Rushforth <k...@openjdk.org> wrote:
>> 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. > > Reviewers: @kevinrushforth @azuev-java Hi @kevinrushforth and @azuev-java , could you please re-approve this PR to unblock two more? ------------- PR Comment: https://git.openjdk.org/jfx/pull/1697#issuecomment-2671963887