JDK-7160083 : Refactor Window, WindowFactory and PluginWindowFactory for Fx on Mac
  • Type: Enhancement
  • Component: deploy
  • Sub-Component: plugin
  • Affected Version: 7u6
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • OS: os_x
  • CPU: x86
  • Submitted: 2012-04-09
  • Updated: 2013-10-17
  • Resolved: 2012-04-21
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
7u6Fixed 8 b36Fixed
Currently, com.sun.deploy.uitoolkit.impl.fx.FxWindow only takes one paramter in its constructor -- the pointer to a parent HWND or Xtoolkit equivalent. On Mac this isn't right. The parent will always be 0, and the embedded Fx frame needs to talk to a remote server for cross-process layer sharing.

This bug tracks the needed changes so the CA rendering server can be passed into FxWindow, and to get the knowledge of communicating the remote CALayer's ID back to the plugin server process out of PluginEmbeddedFrame on the Mac. This will let us minimize the code we need to expose to JavaFx.
Since I now have a preliminary set of changes on the Fx side to support this, I'm expanding this bug to cover all changes needed to support JavaFx in applets and Web Start on the Mac. Specifically:

-- changes to handle a different OS name broke the check to see if JavaFx is supported on Mac.
-- Legacy Apple JVMs are being reported as available for use and shouldn't be
-- Mismatch in cache location between system_md.c and Java code.

We also need to generate proper mime types that indicate Fx is available and installed, but this is in a separate bug.

Code re-factoring. And no regression found.

EVALUATION Fixed as described. Main change is that com.sun.deploy.uitoolkit.Window has a new method getWindowLayerID.