/** Wait for idle .. simply acquiring all locks and releasing them. */ public void waitUntilPrintJobsIdle(PrintableBase p) { lock.lock(); try { if (null != p) { p.waitUntilIdle(); } } finally { lock.unlock(); } }
private void doPrintImpl(final PrintableBase printable, final boolean resizeWithinPrintTest) { final double scaleGLMatXY = 72.0 / printable.dpi; System.err.println("PRINTable: " + printable.getClass().getSimpleName()); System.err.println( "PRINT DPI: " + printable.dpi + ", AA " + printable.numSamples + ", scaleGL " + scaleGLMatXY); final AWTPrintLifecycle.Context ctx = AWTPrintLifecycle.Context.setupPrint( printable.cont, scaleGLMatXY, scaleGLMatXY, printable.numSamples, printable.tileWidth, printable.tileHeight); System.err.println("PRINT AWTPrintLifecycle.setup.count " + ctx.getCount()); final int w = printable.cont.getWidth(); final int h = printable.cont.getHeight(); final long t0 = Platform.currentTimeMillis(); try { AWTEDTExecutor.singleton.invoke( true, new Runnable() { public void run() { try { if (resizeWithinPrintTest) { System.err.println("PRINT resizeWithinPrint size+ " + (w + 64) + "x" + (h + 64)); AWTMisc.performAction(printable.cont, GLAutoDrawable.class, resizePlusAction); printable.cont.validate(); if (printable.cont instanceof Window) { ((Window) printable.cont).pack(); } } printable.job.print(); } catch (PrinterException ex) { ex.printStackTrace(); } } }); } finally { ctx.releasePrint(); final long td = Platform.currentTimeMillis() - t0; System.err.println("PRINT Duration " + td + " ms"); if (resizeWithinPrintTest) { AWTEDTExecutor.singleton.invoke( true, new Runnable() { public void run() { System.err.println("PRINT resizeWithinPrint repaint"); printable.cont.repaint(); System.err.println("PRINT resizeWithinPrint size- " + w + "x" + h); AWTMisc.performAction(printable.cont, GLAutoDrawable.class, resizeMinusAction); printable.cont.validate(); if (printable.cont instanceof Window) { ((Window) printable.cont).pack(); } } }); } System.err.println("PRINT AWTPrintLifecycle.release.count " + ctx.getCount()); } }