[OpenJDK 2D-Dev] [9] RFR: JDK-8066139, , Null return from PrintJob.getGraphics() running closed/java/awt/PrintJob/HighResTest/HighResTest.java

Phil Race philip.race at oracle.com
Fri Feb 19 18:53:39 UTC 2016


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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/2d-dev/attachments/20160219/68de08ce/attachment.html>


More information about the 2d-dev mailing list