RFR: 8176813: Mac: Failure to exit full-screen programmatically in some cases

Andy Goryachev angorya at openjdk.org
Mon Apr 28 22:52:48 UTC 2025


On Mon, 28 Apr 2025 17:47:50 GMT, Martin Fox <mfox at openjdk.org> wrote:

> On macOS the system animates the transition into and out of fullscreen and this animation runs asynchronously. JavaFX tries to make the setFullScreen call appear synchronous by running a nested event loop while the transition is going on. But this means that runLater runnables can fire during a call to setFullScreen.
> 
> This can also occur during a call to Window.hide() if the window is in fullscreen mode. During the setView call glass tries to take the window out of fullscreen mode which fires up a nested event loop and, again, runLater runnables (like pulses) start firing.
> 
> In this PR GlassRunnables that try to run during the fullscreen transition are instead placed in a deferral list. When the fullscreen event loop exits they are re-scheduled.

Using the reproducer in the ticket, I could not reproduce the issue with `testDemaximizedPosition()` - it passed in the master branch.

(Just in case, I am going to attach the exact file)

[Stage_RestorePosition_8176813.java.zip](https://github.com/user-attachments/files/19949842/Stage_RestorePosition_8176813.java.zip)

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

PR Comment: https://git.openjdk.org/jfx/pull/1797#issuecomment-2836946873


More information about the openjfx-dev mailing list