Thanks Johan. I have tested this change with a jpackaged application, and the issue no longer appears. Platform.exit() now exits the application properly.
Craig On Wed, Apr 10, 2024 at 1:45 PM Johan Vos <johan....@gluonhq.com> wrote: > Hi Craig, > > Thanks for testing and for the feedback. Based on that feedback, I pushed > a change so that the HeadlessApplication now responds properly to a > `Platform.exit()` call (see > https://github.com/openjdk/jfx-sandbox/commit/5c8bcb2ca1f7a72f34c3e53e209b818abf8f8504 > ). > My implementation does a gentle stop of the processing thread, and already > submitted runnables will be handled before the processing halts. I think > this is how it should be, and it works with a simple application, but I > didn't test it with a jpackaged application yet. It would be great if you > can confirm that this is now fixed? > > Thanks again for the feedback! > > - Johan > > On Tue, Apr 9, 2024 at 11:37 AM Craig Raw <craig...@gmail.com> wrote: > >> Hi Johan, >> >> As you advised in another thread, I've tested the headless glass platform >> and find it to be an excellent solution. My particular use case is to >> provide an alternative terminal interface (using Lanterna) for a JavaFX >> application without needing to rewrite a great deal of the logic. For this >> purpose, the headless glass platform works very well as a replacement to >> Monocle. >> >> I encountered only one problem - calling Platform.exit() did not >> terminate the application after it had been packaged with jpackage. This >> did not occur with the same code using the JavaFX18 Monocle libraries on >> Linux amd64. The JavaFX application thread was the only non-daemon thread >> at this point. I solved this fairly simply by calling System.exit(0) after >> Platform.exit(). >> >> As an aside, I was impressed by how simple it was to build JavaFX. I was >> surprised though that javafx.graphics.jar did not contain the native >> libraries, and I had to repackage the jar to include them manually. There >> are probably good reasons for this, but it wasn't obvious. >> >> It would be really good to see the headless glass platform merged into >> JavaFX proper, and would allow me to move beyond JavaFX 18, the last >> version to have Monocle support for Linux amd64. >> >> Craig >> >> On Fri, Feb 2, 2024 at 10:50 AM Marius Hanl <mariush...@web.de> wrote: >> >>> I agree that this a nice feature, especially for headless tests as you >>> also mentioned. >>> Really looking forward to this feature. >>> >>> - Marius >>> >>> *Gesendet:* Dienstag, 30. Januar 2024 um 12:46 Uhr >>> *Von:* "Johan Vos" <johan....@gluonhq.com> >>> *An:* "openjfx-dev" <openjfx-dev@openjdk.org> >>> *Betreff:* Headless glass platform >>> Hi, >>> >>> I created a branch in the jfx-sandbox repository for experimenting with >>> a headless glass platform: >>> https://github.com/openjdk/jfx-sandbox/tree/johanvos-headless >>> >>> This addresses https://bugs.openjdk.org/browse/JDK-8324941 where I >>> suggest a POC for a Headless platform. >>> >>> There are a number of usecases for this, including: >>> 1. applications that require JavaFX rendering without presenting this to >>> a window (and instead send it to a printer for example) >>> 2. running tests without requiring a window manager. >>> >>> Regarding the second usecase, we already did some basic experiments >>> using a modified version of TestFX where instead of the Monocle Headless >>> subplatform, the POC Headless platform is used. >>> >>> By using a first-class Headless glass platform instead of a Monocle >>> subplatform, it should be easier to use by developers. >>> The monocle code contains very platform/os specific parts, which often >>> don't make sense outside the target platform. This is very valuable, but it >>> is also a very different usecase than a headless platform and it requires a >>> much more complex build procedure. >>> >>> I added an initial, limited HeadlessRobot to do some basic tests. That >>> code is mainly taken from the existing Monocle implementation, but I want >>> to be careful to avoid anything that is not applicable to the headless >>> scenarios. >>> >>> - Johan >>> >>> >>