On Mon, 3 Mar 2025 21:01:58 GMT, John Hendrikx <jhendr...@openjdk.org> wrote:

>> Andy Goryachev has updated the pull request with a new target base due to a 
>> merge or a rebase. The pull request now contains 25 commits:
>> 
>>  - Merge remote-tracking branch 'origin/master' into 
>> 8349091.charts.thread.safety
>>  - review comments
>>  - Merge remote-tracking branch 'origin/master' into 
>> 8349091.charts.thread.safety
>>  - Merge remote-tracking branch 'origin/master' into 
>> 8349091.charts.thread.safety
>>  - enabled pie chart test
>>  - Merge branch 'master' into 8349091.charts.thread.safety
>>  - Merge branch 'master' into 8349091.charts.thread.safety
>>  - whitespace
>>  - Merge remote-tracking branch 'origin/master' into 
>> 8349091.charts.thread.safety
>>  - cleanup
>>  - ... and 15 more: https://git.openjdk.org/jfx/compare/7a7854c9...4288d1d0
>
> modules/javafx.controls/src/main/java/javafx/scene/chart/AreaChart.java line 
> 546:
> 
>> 544:             symbol.setAccessibleRole(AccessibleRole.TEXT);
>> 545:             symbol.setAccessibleRoleDescription("Point");
>> 546:             symbol.setFocusTraversable(isAccessibilityActive());
> 
> So, if I understand correctly, we can't directly do this `bind`:
> 
>     
> symbol.focusTraversableProperty().bind(Platform.accessibilityActiveProperty())
>     
> Because on a background thread there may not yet be an initialized 
> `Platform`?  Or perhaps, `Platform` would need to initialize and we don't 
> want to do that yet on a background thread?

The reason we `should not` be binding in this PR is because in part it's **bad 
design(tm)**: we are creating a zillion of listeners (one per plot data point); 
a better solution would be to create one listener and use (already existing 
series) to toggle the data points.

The other reason is https://bugs.openjdk.org/browse/JDK-8351067 - the 
`Platform::accessibilityActive` property getter is not thread safe, but even if 
was, registering a listener with it may cause the change to come in **before** 
the node becomes a part of the scene graph, leading to unsynchronized 
multi-threaded access.

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

PR Review Comment: https://git.openjdk.org/jfx/pull/1697#discussion_r1978198906

Reply via email to