How to force pixels to hit the screen?
David.Hill at Oracle.com
Tue May 20 19:50:56 UTC 2014
On 5/20/14, May 20, 2:17 PM, Mike Hearn wrote:
> I'd like to create my main stage, show some splash widgets, then begin the
> slower process of hauling the data and rest of the main UI into memory.
> Unfortunately when I do this most of the startup time has the stage being
> empty, instead of showing the splash. Introducing some artificial delays
> makes it reliably appear, but of course I don't want to slow down startup.
> My guess is that the app initialisation work is starving the render thread,
> so the pixels for the splash don't hit the screen quickly enough. I tried
> using an AnimationTimer to wait for a few pulses, but it didn't work. Ditto
> for plain old runLater.
> If anyone has ideas, it'd be appreciated.
I talked about some related issue at JavaOne 2013. My talk was called " Making Your JavaFX Application Fly on the Raspberry Pi" and can be found here:
Unfortunately, I don't see that they posted just the slides anywhere, just me doing a voice over the slides.
While the talk is targeted towards the Pi, the JavaFX issues are pretty much platform independent.
While I did not use FXML, I used worker threads to load images.
There is a chunk of the talk where I cover the User Event thread, what is does (page 24 @ 16:44) and what to avoid, and a bit on worker threads themselves.
The demo app is in the OpenJFX tree at apps/toys/FXSlideShow
It looks like https://javafx-jira.kenai.com/browse/RT-17716 raises some issues that need to be fixed before FXMLLoader.load can work off the event thread :-(
David Hill <David.Hill at Oracle.com>
Java Embedded Development
"A hasty judgment is a first step to recantation."
-- Publilius Syrus
More information about the openjfx-dev