Hi Michael, attached see your original file updated with the continuation-style solution.
Regards, Tomas On Thu, Sep 24, 2015 at 2:44 PM, Dr. Michael Paus <m...@jugs.org> wrote: > I have written a little test program to evaluate the various strategies > which have > been discussed here. You can download it via this link: > > <https://www.dropbox.com/s/vmg9nyn7pdfk4b1/SmoothButterflies.java?dl=0> > > The program creates a large canvas inside a scroll pane and fills it with > some > butterflies. When you scroll the pane the canvas is redrawn when a certain > threshold is exceeded. With some boolean flags at the top of the program > you can select the redraw strategy. > > This was just a quick and dirty hack, so I hope I haven't made any mistakes > but the result so far is that only the AnimationTimer strategy leads to a > amazingly > smooth result. For all other strategies the scrolling performance is > terrible. > (I have not yet tried the proposal from Tomas.) > > Give it a try yourself. The initial setting are for AnimationTimer. > > Michael > > > Am 24.09.15 um 17:17 schrieb Kevin Rushforth: > > Yes, I think this might be a better approach. >> >> -- Kevin >> >> >> Scott Palmer wrote: >> >>> For some of these use cases I wonder if an AnimationTimer could be used >>> to handle spreading work out. >>> E.g in the case of rendering to a canvas across multiple pulses, do a >>> bit at a time in the AnimationTimer’s handle() method. >>> >>> Scott >>> >>> On Sep 24, 2015, at 5:53 AM, Fisher, Robert <robert.fisher....@zeiss.com> >>>> wrote: >>>> >>>> I was naively thinking something like: >>>> >>>> 1. Make small change to canvas >>>> 2. Fire pulse >>>> 3. Make next small change to canvas >>>> 4. Fire pulse >>>> 5. Etc.. >>>> >>>> But I was actually also unaware of this firePulse method until this >>>> morning (and I couldn't have used it anyway since it's not public API). >>>> >>>> -----Original Message----- >>>> From: openjfx-dev [mailto:openjfx-dev-boun...@openjdk.java.net] On >>>> Behalf Of Dr. Michael Paus >>>> Sent: Donnerstag, 24. September 2015 11:07 >>>> To: openjfx-dev@openjdk.java.net >>>> Subject: Re: Usage of Toolkit firePulse >>>> >>>> Hi, >>>> I wasn't aware of this Toolkit method when I wrote the mail you are >>>> referring to. Can you or anybody else explain what this method exactly >>>> does. It sounds indeed as if I could solve some problems with it although I >>>> am not sure yet and of course only if Jonathan does not block it in the >>>> future :-) Michael >>>> >>>> Am 24.09.15 um 09:31 schrieb Fisher, Robert: >>>> >>>>> I think it would be great to have in the public API. It looks like it >>>>> would allow you to spread large UI updates out over several pulses in a >>>>> well-defined way. >>>>> >>>>> See also this post from a month or so ago: >>>>> >>>>> Hi, >>>>>> I want to do some performance tuning of a JavaFX application of mine >>>>>> but before I can start with that I have to learn a little bit about the >>>>>> scene graph redraw handling. >>>>>> Maybe there is someone on this list who can help me there. >>>>>> >>>>>> What I want to achieve is a super smooth animation (movement) of my >>>>>> scene graph. >>>>>> Let's assume the scene graph itself can be redrawn fast enough in >>>>>> less than 1/60s. >>>>>> In addition let's assume the scene graph contains a canvas which only >>>>>> has to be updated from time to time but an update of the canvas takes >>>>>> substantially longer. >>>>>> Let's say it takes 1s. >>>>>> >>>>>> When an update of the canvas is in progress will this delay the next >>>>>> pulse until all internal drawing within the canvas is finished? From my >>>>>> observations I think so. >>>>>> >>>>>> If I submit my drawing calls to the canvas in smaller chunks via >>>>>> Platform.runLater calls will these also delay the next pulse or will the >>>>>> execution of these calls be delayed in favor of the scene graph update? >>>>>> >>>>>> I hope my goal has become clear. I would like to be able to spread >>>>>> the update of the canvas over several scene graph redraw cycles so that >>>>>> an >>>>>> animation of the canvas stays smooth although the content builds up more >>>>>> slowly. >>>>>> >>>>>> Michael >>>>>> >>>>> -----Original Message----- >>>>> From: openjfx-dev [mailto:openjfx-dev-boun...@openjdk.java.net] On >>>>> Behalf Of Jonathan Giles >>>>> Sent: Donnerstag, 24. September 2015 01:49 >>>>> To: openjfx-dev@openjdk.java.net >>>>> Subject: Usage of Toolkit firePulse >>>>> >>>>> Hi all, >>>>> >>>>> Today I am keen to get your help on understanding use of the >>>>> Toolkit.getToolkit().firePulse() private API. If you could spare a few >>>>> minutes to grep your source directory for any usage of 'firePulse', and >>>>> email me your findings, that would be really interesting. >>>>> >>>>> As a gentle motivational tool I'll conclude by saying that, >>>>> surprisingly, this private API is barely used inside the openjfx >>>>> production >>>>> code. If you look at the openjfx unit tests, it is used massively. The >>>>> question is - how much is this being used by other community members. If >>>>> the answer is 'not much' or less, then this private API may not be made >>>>> public in JDK 9. Your feedback therefore is critical! >>>>> >>>>> Thanks, >>>>> -- Jonathan >>>>> >>>> >>> >