I am not sure I can be correctly understanding the fix as the
ramification seems
to be that if the users wants to print only Page 3 of a 10 page document
and so sets
from page=3 and to page=3, that this request will be ignored and all
pages will
be printed .. can you test such a scenario.
Additionally, have you tried running the original test case provided
with 8061267
against your fix ?
Also when I ran the HighResTest on a current build I saw a null graphics on
the very first call to getGraphics() which is different than what I
interpret
you as saying - you see the null *after* the first page is printed.
-phil.
On 02/19/2016 01:18 AM, prasanta sadhukhan wrote:
Hi Phil, All,
Bug: https://bugs.openjdk.java.net/browse/JDK-8066139
webrev: http://cr.openjdk.java.net/~psadhukhan/8066139/webrev.00/
It was seen after fix of JDK-8061267
<https://bugs.openjdk.java.net/browse/JDK-8061267>: PrinterJob:
Specified Page Ranges not displayed in Windows Native Print Dialog
the closed/java/awt/PrintJob/HighResTest/HighResTest.java was failing
with NPE when PrinterJob.getGraphics() is called the 2nd time before
calling PrinterJob.end().
The above fix caused this regression because it sets the PD_PAGENUMS
flag for windows PrintDlg struct which causes *Pages* radio button to
be selected in print dialog.
However, fromPage and toPage was both set to 1 so after the 1st page
is printed, RasterPrinterJob.print(attributes) finishes and
graphicsToBeDrawn.closeWhenEmpty() gets called
http://hg.openjdk.java.net/jdk9/client/jdk/file/d8def65c6c00/src/java.desktop/share/classes/sun/print/PrintJob2D.java#l1006
which sets the queue to null so when PrinterJob2D#getGraphics() calls
graphicsToBeDrawn.pop() it sees queue to be null and sets graphics
object to be null so
PrinterJob.getGraphics() gets null and g.drawLine in testcase causes
NPE since g is null.
Fix was done to set the PD_PAGENUMS flag only when toPage is more than
fromPage in which case, "All" will be selected in printer dialog and
RasterPrinterJob.print() will finish only after printing all the pages.
Regards
Prasanta