On Sat, 4 Oct 2025 04:28:19 GMT, John Hendrikx <[email protected]> wrote:

> Every `refresh()` will trigger 2 layouts for some reason, where the second 
> one does nothing as nothing is dirty, so basically a noop. I can have a look 
> into that (maybe as a follow up?) but I remember that this happens sometimes 
> in general for the `VirtualFlow` and we should check that generally at one 
> point.

This is something that worries me. One of the main issues I see with e.g. 
VirtualFlow, is that some methods can be invoked both during a rendering pulse 
as well as (indirectly) via explicit invocations, most often by code invoked 
with Platform.runLater().
Depending on whether code is called during a pulse or not, the behavior can be 
very different. A major problematic consequence of a method that used to be 
called outside the pulse, and that is now for some reason (e.g. due to 
concurrency, as it depends whether the Runnable submitted to 
Platform.runLater() is executed before or after the pulse) called during a 
pulse, is that this can lead to flickering. If `requestNextPulse` is called 
during the layout phase, it is very well possible that a "wrong" layout is 
rendered briefly before the correct layout is shown.

I am not saying that this PR makes the situation worse or better, but I think 
there is a reasonable chance that some applications will behave differently 
(and show flickering). Having said that, I don't think that this PR can be 
blamed in case there is a different behavior.

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

PR Comment: https://git.openjdk.org/jfx/pull/1830#issuecomment-3395041542

Reply via email to