RFR: 8359266: Delete the usage of AppContext in the GraphicsDevice

Sergey Bylokhov serb at openjdk.org
Thu Jun 19 01:09:15 UTC 2025


This PR removes the usage of AppContext from the GraphicsDevice class. The original use case was to store the full-screen window in some AppContext, which was necessary in the context of plugin/appletviewer environments. However, there is now effectively only one main AppContext, so this indirection can be eliminated.

Notes: GraphicsDevice provides two methods for handling full-screen windows:
 - setFullScreenWindow() is considered thread-safe, as all platform-specific implementations override it with synchronized methods ([example](https://github.com/openjdk/jdk/blob/23e1e2ff4a4a75ec268c7925fb98d6b96a01bbcf/src/java.desktop/macosx/classes/sun/awt/CGraphicsDevice.java#L226)).
 - getFullScreenWindow() previously relied on AppContext for thread-safety. After removing AppContext, this method is now made thread-safe by declaring the fullScreenWindow field as volatile. This change has been validated by an added test.

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

Commit messages:
 - Create FullScreenWindowRace.java
 - 8359266: Delete the usage of AppContext in the GraphicsDevice

Changes: https://git.openjdk.org/jdk/pull/25818/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=25818&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8359266
  Stats: 93 lines in 2 files changed: 65 ins; 23 del; 5 mod
  Patch: https://git.openjdk.org/jdk/pull/25818.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/25818/head:pull/25818

PR: https://git.openjdk.org/jdk/pull/25818


More information about the client-libs-dev mailing list