[OpenJDK 2D-Dev] [9] RFR 8170352: The collate option is not checked
Prasanta Sadhukhan
prasanta.sadhukhan at oracle.com
Fri Dec 16 13:16:20 UTC 2016
I could finally manage to build on ubuntu16.04 (seems it uses gcc5.4
which is more than officially supported 4.9 causing some hotspot failure).
Anyways, I am seeing the same "uncollation" issue in 16.04 ie it always
collate irrespective of "collate" box is checked or not. I am not sure
if it's got anything to do with my Ricoh printer.
But, if you are seeing it working in yours, then probably all is well,
so I am sending this modified webrev which causes awt functional test to
show the printer dialog as expected.
http://cr.openjdk.java.net/~psadhukhan/8170352/webrev.01/
Probably Yuri or submitter can verify it at their end with this patch if
it works.
Regards
Prasanta
On 12/15/2016 4:55 AM, Phil Race wrote:
> With a hacked JDK 9 (so that collate is not disabled) I can print
> either collated or un-collated.
> This is on Ubuntu 16.04 with HP CP4525
>
> testing this is a pain since the spooler hangs in "processing" after
> every job
> and I need to kill the process and restart the printer.
>
> That is not a JDK problem since (a) outside our scope and (b) same
> problem with libreoffice printing ..
>
> But it makes me think that we should be looking at reverting 8016737
> .. not extending it.
>
> -phil.
>
> On 12/14/2016 01:20 PM, Phil Race wrote:
>>
>>
>> On 12/14/2016 01:40 AM, Prasanta Sadhukhan wrote:
>>>
>>> Hi Phil,
>>>
>>>
>>> On 12/14/2016 1:40 AM, Phil Race wrote:
>>>> Hi,
>>>>
>>>> Thanks for checking that.
>>>>
>>>> The bit I don't like here is that the end-user can then no longer
>>>> ask for collation
>>>> at all on Linux even though it has some chance of working on some
>>>> versions.
>>>>
>>> This is the case even without my change and collate option is
>>> disabled for PrinterJob.
>>> My fix (?) makes it disabled for PrintJob too.
>>
>> Ah yes.
>>>> Hmm ..
>>>>
>>>> http://stackoverflow.com/questions/31056278/postscript-file-is-not-collating-when-cups-copies-is-set
>>>> ---
>>>> In our cups class we were doing a cupsAddOption("copies", "2",..
>>>> and cupsAddOption("Collate", "True", .. commands (see examples
>>>> below). It turns out the the cups "copies" command was killing the
>>>> Collating if it set to 2. Like the orientation postscript/cups
>>>> conflict you need to set the cups copies value to 1 to get the
>>>> collation to work. The postscript file already knows its going to
>>>> print out, for example 2 copies.
>>>> ---
>>>>
>>>> We set NumCopies in the Postscript along with collate :-
>>>> mPSStream.print(isCollated() ? " /Collate true":"");
>>>> mPSStream.print(" /NumCopies " +getCopiesInt());
>>>>
>>>> So when we exec we also do "lp -# 2 .. " or whatever do set copies.
>>>>
>>> We are setting copies to 1 in
>>> http://hg.openjdk.java.net/jdk9/client/jdk/file/dc658d7dde90/src/java.desktop/share/classes/sun/print/PSPrinterJob.java#l735.
>>
>> OK.
>>
>>>
>>> One thing is that, in my testing in ubuntu14.04 "collation" is
>>> working and "uncollation" is not working. When I print 2 copies and
>>> do not select "collate" option in printer dialog [I enabled collate
>>> option by commenting out the isLinux check from
>>> http://hg.openjdk.java.net/jdk9/client/jdk/file/a21bac70753d/src/java.desktop/unix/classes/sun/print/IPPPrintService.java#l1062]
>>>
>>> then, it prints Page 0, Page 1, Page 0, Page 1 [same as, when I
>>> checked "collate" option] in my Ricoh printer in double-sided print.
>>> I think for uncollation, it should print Page 0, Page 0 back-to-back
>>> in 1 copy and Page1-Page1 in another copy, right?
>>
>> Yes, uncollated should be as you say.
>> What is going on ??? Is this for PrinterJob or PrintJob or both ?
>> I need to configure a printer on my Ubuntu .. I lost them recently
>> when my hard drive went bad.
>>
>> -phil..
>>
>>>
>>> Regards
>>> Prasanta
>>>> Does it help if we stop doing that for the collated case ?
>>>>
>>>>
>>>> -phil.
>>>>
>>>> On 12/10/2016 12:19 AM, Prasanta Sadhukhan wrote:
>>>>>
>>>>>
>>>>>
>>>>> On 12/10/2016 4:58 AM, Phil Race wrote:
>>>>>> Regarding being hard-coded for "Selection", the point there is
>>>>>> that in the AWT code path we always generate Postscript, whereas
>>>>>> in the 2D path we may send some other content. Since we generate
>>>>>> Postscript my instinct here is that Collate should always work
>>>>>> since that gets embedded in the Postscript. The CUPS filter
>>>>>> should then do whatever is necessary to generate the right number
>>>>>> of collated or uncollated copies for the printer. I tracked down
>>>>>> the changeset that has the code you reference
>>>>>> http://hg.openjdk.java.net/jdk8/jdk8/jdk/rev/dead66347eca If you
>>>>>> read the bug report for that :
>>>>>> https://bugs.openjdk.java.net/browse/JDK-8016737 then it becomes
>>>>>> clear (sort of) that this was a workaround for the oddity that
>>>>>> Collate worked on Ubuntu 12.04 but not on Ubuntu 13.04, so the
>>>>>> idea was to stop saying it was supported. That is very annoying
>>>>>> of course and I'd love to know if we've rechecked from the source
>>>>>> that "CUPS does not report collate as a supported attribute"
>>>>> I checked getAttMap (response received from cups)
>>>>> http://hg.openjdk.java.net/jdk9/client/jdk/file/dc658d7dde90/src/java.desktop/unix/classes/sun/print/IPPPrintService.java#l1767
>>>>> and there is no "collate-supported" attribute in there.
>>>>>> It is mentioned in CUPS docs.
>>>>>> https://opensource.apple.com/source/cups/cups-62/doc/spm.shtml?txt#CONSTANTS
>>>>>> Also the fix you are proposing doesn't seem to change anything
>>>>>> that will help the test. It expects Collate to be checked.
>>>>>> Doesn't it ?
>>>>> The fix does not directly help the test. The idea is to have the
>>>>> test call first isAttributeCategorySupprted(SheetCollate.class)
>>>>> and only execute the test if it is supported. It is mentioned
>>>>> inthe bug report.
>>>>> Since, now our code returns false for SheetCollate attribute, my
>>>>> fix will disable the collate option to prevent anomaly of
>>>>> returning false for support but enabling the collate option.
>>>>>
>>>>> Regards
>>>>> Prasanta
>>>>>> -phil.
>>>>>>
>>>>>>
>>>>>> On 12/09/2016 12:22 AM, Prasanta Sadhukhan wrote:
>>>>>>>
>>>>>>> Hi All,
>>>>>>>
>>>>>>> In continuation with the below mail, the issue is "collate"
>>>>>>> option is not checked for linux.
>>>>>>>
>>>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8170352
>>>>>>>
>>>>>>> webrev: http://cr.openjdk.java.net/~psadhukhan/8170352/webrev.00/
>>>>>>>
>>>>>>> Proposed fix is to disable collate option for linux in printer
>>>>>>> dialog.
>>>>>>>
>>>>>>> Regards
>>>>>>> Prasanta
>>>>>>> On 12/8/2016 4:23 PM, Prasanta Sadhukhan wrote:
>>>>>>>>
>>>>>>>> Hi Phil,
>>>>>>>>
>>>>>>>> I was investigating JDK-8170352: The collate option is not
>>>>>>>> checked and I found that CUPS does not report collate as
>>>>>>>> supported attribute.
>>>>>>>>
>>>>>>>> It is removed from printRequestAttrib
>>>>>>>> [http://hg.openjdk.java.net/jdk9/client/jdk/file/a21bac70753d/src/java.desktop/unix/classes/sun/print/IPPPrintService.java#l167]
>>>>>>>> so we do not look for collate-supported attribute in CUPS.
>>>>>>>> Infact, getAttMap does not have any "collate-supported"
>>>>>>>> attribute too!!
>>>>>>>> Also, this code
>>>>>>>> [http://hg.openjdk.java.net/jdk9/client/jdk/file/a21bac70753d/src/java.desktop/unix/classes/sun/print/IPPPrintService.java#l1062]
>>>>>>>> has been added [for 8016737]
>>>>>>>> to remove SheetCollate from supported attributes.
>>>>>>>>
>>>>>>>> In light of this, I think we should disabled collate option
>>>>>>>> from our print dialog even for Toolkit based PrintJob. It
>>>>>>>> seems, from this code
>>>>>>>> http://hg.openjdk.java.net/jdk9/client/jdk/file/a21bac70753d/src/java.desktop/share/classes/sun/print/ServiceDialog.java#l1251
>>>>>>>> it is enabled if we specify in testcase
>>>>>>>> /job.setDefaultSelection(JobAttributes.DefaultSelectionType.SELECTION);
>>>>>>>> /in which case isAWT set to true.
>>>>>>>> even though selection is determined by attribute support
>>>>>>>> [http://hg.openjdk.java.net/jdk9/client/jdk/file/a21bac70753d/src/java.desktop/share/classes/sun/print/ServiceDialog.java#l1320]
>>>>>>>>
>>>>>>>> I could not find why it is hardcoded to setEnabled(true) for
>>>>>>>> "Selection". Do you know? mercurial history shows that line
>>>>>>>> from jdk7 and I could not find previous history.
>>>>>>>> I think there also, we should check for "scSupported" to
>>>>>>>> enable sheetcollate? Anyways, "Selection" option is not there
>>>>>>>> in linux.
>>>>>>>> Please let me know your views.
>>>>>>>>
>>>>>>>> Regards
>>>>>>>> Prasanta
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/2d-dev/attachments/20161216/53f033df/attachment.html>
More information about the 2d-dev
mailing list