[OpenJDK 2D-Dev] <Swing Dev> [11] JDK-8153732: Windows remote printer changes do not reflect in lookupPrintServices()
Phil Race
philip.race at oracle.com
Thu Jun 21 20:46:09 UTC 2018
I thought you were going to make the refresh time 4 minutes ?
I don't see that it has to be the same on Windows as it was on Unix,
if you say 4 minutes is a sensible value there .. and 4 mins will be
less CPU wake up, so I'd back that (4 mins) ahead of 2 minutes as the
default here.
You still have missing white space
432 while(true) {
With these two changes you have my +1 ..
BTW the native diff looks MUCH better now - thanks !
-phil.
On 06/21/2018 01:33 PM, Shashidhara Veerabhadraiah wrote:
>
> Hi Phil, Here is the new Webrev for changes you suggested.
>
> http://cr.openjdk.java.net/~sveerabhadra/8153732/webrev.03/
> <http://cr.openjdk.java.net/%7Esveerabhadra/8153732/webrev.03/>
>
> Thanks and regards,
>
> Shashi
>
> *From:*Phil Race
> *Sent:* Friday, June 22, 2018 1:02 AM
> *To:* Shashidhara Veerabhadraiah
> <shashidhara.veerabhadraiah at oracle.com>; 2d-dev <2d-dev at openjdk.java.net>
> *Subject:* Re: <Swing Dev> [11] JDK-8153732: Windows remote printer
> changes do not reflect in lookupPrintServices()
>
> + private static final long DELAY = 1000 * 60 * 4; // 4 min pooling
> I think we need a System Property that can control this.
> I suggest the name "sun.java2d.print.minRefreshTime" which is what we
> use on Unix.
> and similarly to there we should have "sun.java2d.print.polling" which
> is a boolean
> and controls whether we do this at all ..
> See
> src/java.desktop/unix/classes/sun/print/PrintServiceLookupProvider.java
> Lots of places where you are missing a space before "("
> + if(str1.length != str2.length) {
> + for(int i = 0;i < str1.length;i++) {
> + for(int j = 0;j < str2.length;j++) {
> + if(!str1[i].equals(str2[j])) {
> + while(true) {
> + if(doCompare(prevRemotePrinters,
> currentRemotePrinters)) {
> There's some of that in native too
> 266 if(info4->Attributes & 0x00000010) {
> In
> http://cr.openjdk.java.net/~sveerabhadra/8153732/webrev.01/src/java.desktop/windows/native/libawt/windows/WPrinterJob.cpp.sdiff.html
> <http://cr.openjdk.java.net/%7Esveerabhadra/8153732/webrev.01/src/java.desktop/windows/native/libawt/windows/WPrinterJob.cpp.sdiff.html>
> you seem to have moved all the existing and (I think) unchanged
> related functions so the DIFF appears
> much bigger than it really is. Please move them back and re-generate.
> The test really needs to provide an "out" for someone running the test
> who has no way
> to add a network printer .. they don't want to have to fail the test.
> As well as that, arguably this should be an @ignore test, so it is not
> run unless
> you are trying to run all the tests.
> -phil.
>
> On 06/21/2018 12:08 PM, Shashidhara Veerabhadraiah wrote:
>
> Hi Phil, Here is the new Webrev. I chose 4 mins because I think it
> takes around 2 mins to add a new network printer, hence I felt 4
> mins is a good time.
>
> The windows **PrinterChangeNotifications** calls are a blocking
> function calls hence I could not add the remote printers monitor
> to the existing thread. Hence there is a new thread being added to
> listen to remote printers status changes.
>
> http://cr.openjdk.java.net/~sveerabhadra/8153732/webrev.01/
> <http://cr.openjdk.java.net/%7Esveerabhadra/8153732/webrev.01/>
>
> Thanks and regards,
>
> Shashi
>
> *From:*Philip Race
> *Sent:* Thursday, June 21, 2018 5:38 AM
> *To:* 2d-dev <2d-dev at openjdk.java.net>
> <mailto:2d-dev at openjdk.java.net>; Shashidhara Veerabhadraiah
> <shashidhara.veerabhadraiah at oracle.com>
> <mailto:shashidhara.veerabhadraiah at oracle.com>
> *Subject:* Fwd: Re: <Swing Dev> [11] JDK-8153732: Windows remote
> printer changes do not reflect in lookupPrintServices()
>
> The main concern I have is we now have a busy thread burning CPU ..
> bad for laptops .. and if we add a delay we have less prompt
> notification
> of a new local printer.
>
> I think the compromise is that the existing thread maybe kept as is,
> and we add a new thread that pools every 10 minutes for a remote
> printer.
>
> If we can make the existing thread wake up from its wait and do
> that, even better.
>
> -phil.
>
> -------- Original Message --------
>
> *Subject: *
>
>
>
> Re: [11] JDK-8153732: Windows remote printer changes do not
> reflect in lookupPrintServices()
>
> *Date: *
>
>
>
> Wed, 20 Jun 2018 17:03:56 -0700
>
> *From: *
>
>
>
> Philip Race <philip.race at oracle.com> <mailto:philip.race at oracle.com>
>
> *Organization: *
>
>
>
> Oracle Corporation
>
> *To: *
>
>
>
> Shashidhara Veerabhadraiah <shashidhara.veerabhadraiah at oracle.com>
> <mailto:shashidhara.veerabhadraiah at oracle.com>
>
> *CC: *
>
>
>
> awt-dev at openjdk.java.net <mailto:awt-dev at openjdk.java.net>,
> swing-dev at openjdk.java.net <mailto:swing-dev at openjdk.java.net>
>
>
>
> This is on the wrong lists. Not Swing. Not AWT. Should be 2d.
> I'll forward it there and continue there. Consider the AWT+Swing
> threads dead.
>
> -phil.
>
> On 6/20/18, 3:12 AM, Shashidhara Veerabhadraiah wrote:
>
> Hi All, Please review this code changes for the below enhancement.
>
> Enhancement: https://bugs.openjdk.java.net/browse/JDK-8153732
>
> Webrev:
> http://cr.openjdk.java.net/~sveerabhadra/8153732/webrev.00/
> <http://cr.openjdk.java.net/%7Esveerabhadra/8153732/webrev.00/>
>
> Details of the changes: Windows provides
> *PrinterChangeNotification* functions that provides
> information about printer status changes of the local
> printers(subset) but not network printers.
> Alternatively, Windows provides a way thro' which one can get
> the network printer status changes by using WMI,
> RegistryKeyChange combination, which is a slightly complex
> mechanism.
> The Windows WMI offers an async and sync method to read thro'
> registry via the WQL query. The async method is considered
> dangerous as it leaves open a channel until we close it. But
> the async method has the advantage of being notified of a
> change in registry by calling callback without polling for
> it. The sync method uses the polling mechanism to notify.
> RegistryValueChange cannot be used in combination with WMI to
> get registry value change notification because of an error
> that may be generated because the scope of the query would be
> too big to handle(at times).
> Hence an alternative mechanism is choosen via the EnumPrinters
> by polling for the count of printer status changes(add\remove)
> and based on it update the printers list(both local and remote
> printers - superset).
>
> Thanks and regards,
>
> Shashi
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/2d-dev/attachments/20180621/2754b74d/attachment-0001.html>
More information about the 2d-dev
mailing list