--- old/modules/javafx.graphics/src/main/java/com/sun/prism/j2d/print/J2DPrinterJob.java 2018-06-04 12:20:33.171362931 -0700 +++ new/modules/javafx.graphics/src/main/java/com/sun/prism/j2d/print/J2DPrinterJob.java 2018-06-04 12:20:32.903362942 -0700 @@ -80,6 +80,8 @@ import com.sun.javafx.stage.WindowHelper; import com.sun.javafx.tk.TKStage; import com.sun.javafx.tk.Toolkit; +import com.sun.glass.utils.NativeLibLoader; +import com.sun.prism.impl.PrismSettings; import com.sun.prism.j2d.PrismPrintGraphics; @@ -89,6 +91,21 @@ public class J2DPrinterJob implements PrinterJobImpl { + static { + AccessController.doPrivileged((PrivilegedAction) () -> { + String libName = "prism_common"; + + if (PrismSettings.verbose) { + System.out.println("Loading Prism common native library ..."); + } + NativeLibLoader.loadLibrary(libName); + if (PrismSettings.verbose) { + System.out.println("\tsucceeded."); + } + return null; + }); + } + javafx.print.PrinterJob fxPrinterJob; java.awt.print.PrinterJob pJob2D; javafx.print.Printer fxPrinter; @@ -106,17 +123,25 @@ PrintRequestAttribute alwaysOnTop = null; try { if (onTopClass == null) { - onTopClass = Class.forName("sun.print.DialogOnTop"); + onTopClass = + Class.forName("javax.print.attribute.standard.DialogOwner"); + } + if (id == 0) { + Constructor + cons = onTopClass.getConstructor(); + alwaysOnTop = cons.newInstance(); + } else { + alwaysOnTop = getAlwaysOnTop(onTopClass, id); } - Constructor cons = - onTopClass.getConstructor(long.class); - alwaysOnTop = cons.newInstance(id); } catch (Throwable t) { } return alwaysOnTop; }); } + private static native + PrintRequestAttribute getAlwaysOnTop(Class onTopClass, long id); + public J2DPrinterJob(javafx.print.PrinterJob fxJob) { fxPrinterJob = fxJob; @@ -159,7 +184,10 @@ printReqAttrSet.remove(onTopClass); } if (owner != null) { - long id = WindowHelper.getPeer(owner).getRawHandle(); + long id = 0L; + if (PlatformUtil.isWindows()) { + id = WindowHelper.getPeer(owner).getRawHandle(); + } PrintRequestAttribute alwaysOnTop = getAlwaysOnTop(id); if (alwaysOnTop != null) { printReqAttrSet.add(alwaysOnTop); @@ -230,7 +258,10 @@ printReqAttrSet.remove(onTopClass); } if (owner != null) { - long id = WindowHelper.getPeer(owner).getRawHandle(); + long id = 0L; + if (PlatformUtil.isWindows()) { + id = WindowHelper.getPeer(owner).getRawHandle(); + } PrintRequestAttribute alwaysOnTop = getAlwaysOnTop(id); if (alwaysOnTop != null) { printReqAttrSet.add(alwaysOnTop);