/** 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());
   }
 }