[OpenJDK 2D-Dev] [8] Review request for 8007642: Media Names on Java Print Do Not Match the Printer's and Confuse Users
Phil Race
philip.race at oracle.com
Thu Jun 20 23:06:34 UTC 2013
I am ok with this fix.
-phil.
On 4/23/2013 8:19 AM, Anton Litvinov wrote:
> Hello Jennifer,
>
> Thank you for clarification of your situation with JVM crash. I am
> very glad to know that it was not caused by the fix and that you
> managed to evaluate it. I tried to test the fix with the printer
> driver "Brother MFC-J6710DW", which you specified in your previous
> e-mail. I also was able to reproduce the situation with absence of the
> media size "Ledger (Short Grain)(11 x 17 in)" in Java Page Setup
> dialog, but debugging showed that this media size was displayed as
> "Ledger" and "Ledger (11 x 17 in)" was considered as "Tabloid",
> because its paper ID equaled "3", which is really "Tabloid". So,
> probably, other native applications, whose page setup dialogs show
> "Ledger (11 x 17 in)" instead of "Tabloid", simply print out media
> size names returned by the driver, therefore I suppose that exactly
> this media size is problematic because of the driver, which supplies
> either the wrong paper ID or the wrong paper name. I created an
> improved second version of the fix. Could you please review it.
>
> Webrev: http://cr.openjdk.java.net/~alitvinov/8007642/webrev.01
>
> Differences between this fix and its previous version are the following:
>
> 1. Static initialization block of Win32PrintService class was removed,
> because its internal call
>
> 86 Class c = Win32MediaSize.class;
>
> did not lead to initialization of the static variable "predefMedia"
> from a static initialization block of Win32MediaSize class. Such
> situation is the reason of constant returning of null values from
>
> 623 msn = findMatchingMediaSizeNameMM(wid, ht);
>
> for each first iteration of the for loop in
> "Win32PrintService.getMediaSizes" method. As a solution for this
> problem "predefMedia" started being initialized by a direct call to
> the new "Win32MediaSize.getPredefMedia" method, which guarantees that
> before its execution the static initialization block of Win32MediaSize
> class is already executed.
>
> 2. Additional changes in the method "Win32PrintService.initMedia"
> guarantee that a media size name provided by the printer's driver is
> always added to "msnList" local variable, if a paper ID does not match
> with any paper ID predefined in JDK (the call
> "findWin32Media(((Integer)idList.get(i)).intValue());"). This change
> makes it possible to display "Ledger (Short Grain)(11 x 17 in)" media
> size with the driver "Brother MFC-J6710DW". So in certain cases this
> fix leads to displaying of 2 media size names for one media size: 1
> media size name registered in JDK, whose media size matches with this
> media size, 1 new media size name constructed from a string returned
> by the driver. Testing in my local environment with all earlier
> mentioned printers showed that cases of presence of such pairs of
> media size names are very rare, while they help users to find the
> required media sizes in Java Page Setup Dialog.
>
> Thank you,
> Anton
>
> On 4/20/2013 1:39 AM, Jennifer Godinez wrote:
>> Hi Anton,
>>
>> I apologize that the cause of the crash is specific to my system. I
>> re-cloned a fresh copy and did not see the crash anymore. The fix
>> works but I have concern that mixing media size names with JDK
>> predefined names with printer driver is still confusing for the
>> user. For one, I was able to find a driver, Brother MFC-J6710,
>> wherein it has 4 types of Ledgers (Ledger, Ledger Short Grain, Ledger
>> Borderless, and Ledger Borderless/ShortGrain) . In JDK, it is
>> showing, Ledger, Tabloid, Ledger Borderless, and Ledger
>> Borderless/ShortGrain. I think our use of Tabloid is still not
>> right. I'm leaning towards either changing all the names but this is
>> up for discussion.
>>
>> Jennifer
>>
>> On 4/19/2013 9:23 AM, Anton Litvinov wrote:
>>> Hello Jennifer,
>>>
>>> I am sorry, but I cannot confirm existence of such a crash, because
>>> in my local environment I do not experience any unchecked Java
>>> exceptions and JVM crashes. Today I have made a fresh clone of all
>>> workspaces from the repository
>>> (http://hg.openjdk.java.net/jdk8/jdk8), have applied this fix and
>>> have compiled the JDK 8. Also, to be on the safe side, PrimoPDF
>>> printer has been reinstalled with the latest version available for
>>> downloading from the web site mentioned in my previous e-mail. And I
>>> was not able to reproduce your crash neither by scrolling the Media
>>> Sizes in Page Setup Dialog, nor by moving in that list using the
>>> keyboard.
>>>
>>> Did you get this crash with the latest source code of the whole JDK
>>> 8 patched with the fix? Do you use the test application provided on
>>> the bug's record page? Perhaps, you are using a "fastdebug" build of
>>> JDK 8, if it is so, then can this kind of build be considered as a
>>> reliable for verification of fixes?
>>>
>>> Thank you,
>>> Anton
>>>
>>> On 4/19/2013 1:21 AM, Jennifer Godinez wrote:
>>>> Hi Anton,
>>>>
>>>> I got a crash when I tried to go down the list of Media Size in
>>>> Page Setup Dialog. Output is below. Can you confirm?
>>>>
>>>> Jennifer
>>>>
>>>> OUTPUT:
>>>> ---------------------------
>>>> PrintService = Win32 Printer : PrimoPDF
>>>> *********************
>>>> AWT Assertion Failure
>>>> *********************
>>>> value != NULL
>>>> File 'Hashtable.cpp', at line 124
>>>> GetLastError() is 0 : The operation completed successfully.
>>>>
>>>> Do you want to break into the debugger?
>>>> *********************
>>>> #
>>>> # A fatal error has been detected by the Java Runtime Environment:
>>>> #
>>>> # Internal Error (os_windows_x86.cpp:143), pid=8932, tid=9484
>>>> # guarantee(result == EXCEPTION_CONTINUE_EXECUTION) failed:
>>>> Unexpected result f
>>>> rom topLevelExceptionFilter
>>>> #
>>>>
>>>>
>>>> On 4/17/2013 9:49 AM, Jennifer Godinez wrote:
>>>>> Thanks Anton. I will test your fix and let you know.
>>>>>
>>>>> Jennifer
>>>>>
>>>>> On 4/17/2013 5:53 AM, Anton Litvinov wrote:
>>>>>> Hello Jennifer,
>>>>>>
>>>>>> Thank you very much for the review of this fix. For reproduction
>>>>>> of this bug and testing of the fix the printer "PrimoPDF" with
>>>>>> its driver "PrimoPDF" was used. This printer is a virtual printer
>>>>>> which generates PDF files as a result of printing jobs and which
>>>>>> can be downloaded at the URL (http://www.primopdf.com). Such a
>>>>>> printer was selected for testing, because it supports the paper
>>>>>> size "11 x 17" in inches, with which the bug was experienced by a
>>>>>> user according to the bug report.
>>>>>>
>>>>>> Also I was able to observe a similar situation with the printers:
>>>>>> "Microsoft XPS Document Writer", "Xerox WorkCentre 4250 GPD PS"
>>>>>> but on paper sizes different from "11 x 17". For example, if the
>>>>>> printer "Xerox WorkCentre 4250 GPD PS" is used, JDK interprets
>>>>>> the paper size "Postcard (100 x 148 mm)" as "Postcard (JIS)" and,
>>>>>> when algorithm of the method
>>>>>> "sun.print.Win32PrintService.getMediaSizes" encounters the paper
>>>>>> size "Japanese Postcard", it interprets it as "Postcard (JIS)"
>>>>>> again, which leaves just one media size "Postcard (JIS)" from 2
>>>>>> in Java cross-platform Page Setup and Print dialogs. I think that
>>>>>> this situation is similar to the case with "11 x 17" paper size,
>>>>>> because some user can also be willing to see exactly "Postcard
>>>>>> (100 x 148 mm)" media size in the mentioned Java dialogs, where
>>>>>> it will be absent, whoever this fix still will not allow
>>>>>> "Postcard (100 x 148 mm)" to be displayed.
>>>>>>
>>>>>> Thank you,
>>>>>> Anton
>>>>>>
>>>>>> On 3/29/2013 11:26 PM, Jennifer Godinez wrote:
>>>>>>> Hi Anton,
>>>>>>>
>>>>>>> What printer and printer driver version did you use to test your
>>>>>>> fix?
>>>>>>> Thanks.
>>>>>>>
>>>>>>> Jennifer
>>>>>>>
>>>>>>> On 3/11/2013 1:41 AM, Anton Litvinov wrote:
>>>>>>>> Hello,
>>>>>>>>
>>>>>>>> Please review the following fix. This is the second reminder
>>>>>>>> message. Please take into account that the original review
>>>>>>>> request was sent more than 1 month ago and no response has been
>>>>>>>> received yet.
>>>>>>>>
>>>>>>>> Bug: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8007642
>>>>>>>> Webrev: http://cr.openjdk.java.net/~alitvinov/8007642/webrev.00
>>>>>>>>
>>>>>>>> Thank you,
>>>>>>>> Anton
>>>>>>>>
>>>>>>>> On 2/21/2013 6:53 PM, Anton Litvinov wrote:
>>>>>>>>> Hello,
>>>>>>>>>
>>>>>>>>> I am sorry for inconvenience. This is a reminder message. I am
>>>>>>>>> still interested in reception of the response to this review
>>>>>>>>> request and just want to be sure that it is not lost on the
>>>>>>>>> mail alias's archive.
>>>>>>>>>
>>>>>>>>> Thank you,
>>>>>>>>> Anton
>>>>>>>>>
>>>>>>>>> On 2/8/2013 8:09 PM, Anton Litvinov wrote:
>>>>>>>>>> Hello,
>>>>>>>>>>
>>>>>>>>>> Please review the following fix for a bug.
>>>>>>>>>>
>>>>>>>>>> Bug: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8007642
>>>>>>>>>> Webrev: http://cr.openjdk.java.net/~alitvinov/8007642/webrev.00
>>>>>>>>>>
>>>>>>>>>> The bug consists in the fact that Java cross-platform Page
>>>>>>>>>> Setup and Print dialogs do not always list all media sizes
>>>>>>>>>> supported by a printer. The fix is based on addition of
>>>>>>>>>> dynamic creation of new media names of the type
>>>>>>>>>> "sun.print.Win32MediaSize" based on paper names received from
>>>>>>>>>> Windows API function with corresponding media sizes of the
>>>>>>>>>> type "javax.print.attribute.standard.MediaSize" for the case,
>>>>>>>>>> when the printer's media size name, which is being analyzed
>>>>>>>>>> in "sun.print.Win32PrintService.initMedia" method, is not
>>>>>>>>>> added to the final list of media sizes supported by the
>>>>>>>>>> printer because of an already existing duplicate in that
>>>>>>>>>> list. In such a case the printer's paper size matches with
>>>>>>>>>> one of the media sizes registered in JDK, while the paper
>>>>>>>>>> size ID does not match with any ID known to JDK.
>>>>>>>>>>
>>>>>>>>>> Also the code in "Win32PrintService.findWin32Media" method
>>>>>>>>>> was altered to allow three cases from "switch" block to work
>>>>>>>>>> as expected, because currently they never match with
>>>>>>>>>> "dmIndex" value, since it is always less then
>>>>>>>>>> "dmPaperToPrintService.length" under "if" statement.
>>>>>>>>>>
>>>>>>>>>> Thank you,
>>>>>>>>>> Anton
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
More information about the 2d-dev
mailing list